[問題] 如何選取向量中出現不同日期的第一個位

看板R_Language作者 (小天使)時間1年前 (2022/07/20 08:36), 1年前編輯推噓4(406)
留言10則, 5人參與, 1年前最新討論串1/1
各位 我有一個日期向量,格式如下,想找出向量中出現不同日期的第一個位置 “20210801” “20210801” “20210806” “20210806” “20210806” “20210806” “20210921” “20210921” “20210921” “20210928” “20210929” 我想要 這些日期第一個出現的位置(如下) 日期 位置 “20210801”, 1 “20210806”, 3 “20210921”, 7 “20210928”, 10 “20210929”, 11 請問要如何一次性找出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.26.45 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1658277395.A.E31.html ※ 編輯: jezi1878 (101.12.26.45 臺灣), 07/20/2022 08:37:30 ※ 編輯: jezi1878 (101.12.26.45 臺灣), 07/20/2022 08:38:48 ※ 編輯: jezi1878 (101.12.26.45 臺灣), 07/20/2022 08:40:03

07/20 10:52, 1年前 , 1F
shift一格相減,取大于0的位置如何?
07/20 10:52, 1F

07/20 11:02, 1年前 , 2F
笨方法:轉成data.frame後,用unique(),rowname()為位置
07/20 11:02, 2F

07/20 11:05, 1年前 , 3F

07/20 11:59, 1年前 , 4F
如果資料沒有sort shift一格相減不一定會正確
07/20 11:59, 4F

07/20 12:02, 1年前 , 5F
用dplyr就是aggregate+first或group_by+first
07/20 12:02, 5F

07/20 14:08, 1年前 , 6F
which(!duplicated(x))
07/20 14:08, 6F

07/20 14:13, 1年前 , 7F
這方法不論是否已經排序,都會回傳該值第一次出現的位置
07/20 14:13, 7F

07/20 16:54, 1年前 , 8F
match(unique(x), x))
07/20 16:54, 8F

07/20 21:30, 1年前 , 9F
綜合以上,在保持vector而不轉成data.frame的狀況下:
07/20 21:30, 9F

07/20 21:31, 1年前 , 10F
cbind(unique(x), which(!duplicated(x)) 同時有值跟位置
07/20 21:31, 10F
文章代碼(AID): #1YrquJun (R_Language)
文章代碼(AID): #1YrquJun (R_Language)