Re: [問題] 資料次數依照日序排列

看板R_Language作者 (討厭有好心推文後刪文者)時間6年前 (2018/10/29 22:03), 6年前編輯推噓1(105)
留言6則, 3人參與, 6年前最新討論串2/2 (看更多)
轉成日期物件會好處理很多。 library(magrittr) x <- paste0(round(runif(200, 1, 12)), "月", round(runif(200, 1, 28)), "日") x.date <- lapply(strsplit(x, "[日月]"), function(foo) { paste(foo, collapse = "-") %>% as.Date(., "%m-%d") }) %>% do.call("c", .) y <- table(x.date) y[order(names(y))] ※ 引述《demonio (亦魯)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 有一批日期資料如下: : 3 1月2日 : 4 1月3日 : 5 1月3日 : 6 1月3日 : 7 1月3日 : 8 1月3日 : 9 1月4日 : 10 1月5日 : 11 1月5日 : 12 1月5日 : 13 1月8日 : 14 1月10日 : 15 1月10日 : 16 1月11日 : 17 1月11日 : ...以下省略 : 想用table計算出這些日期出現的次數,然後用折線圖從1月1日開始呈現出次數(預計是用 : plot) : 可是table不會按照日期排列,table的排列方式如下,是從1月10日開始: : 1月10日 1月11日 1月12日 1月15日 1月17日 1月18日 1月22日 1月23日 : 2 7 2 2 1 4 2 3 : 1月24日 1月25日 1月26日 1月29日 1月2日 1月30日 1月31日 1月3日 : 1 1 3 4 3 2 2 5 : 1月4日 1月5日 1月8日 2月12日 2月13日 2月14日 2月21日 2月22日 : 1 3 1 1 2 3 3 1 : 以至於用plot折線圖畫也是從1月10號開始。無法由1月1日到12月31日呈現次數折線 : 請教這是否需要特殊的函數來解? : [程式範例]: : mail2018<-read.csv(" mail.csv", header = FALSE) : mail<-table(mail2018) : plot(mail,type = "l",xlab="日期",ylab="次數",ylim=c(0,20)) : [環境敘述]: : RStudio Version 1.1.423 : [關鍵字]: : : table : -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.43.95 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1540821800.A.7CC.html

10/29 22:25, 6年前 , 1F
原來strsplit可以這樣分,直接塞兩個值進去
10/29 22:25, 1F

10/29 22:25, 6年前 , 2F
學到一招了,感謝分享
10/29 22:25, 2F
我傻了,其實 x.date <- as.Date(x, "%m月%d日") 就可以了 ※ 編輯: andrew43 (220.133.43.95), 10/29/2018 22:28:30

10/30 11:06, 6年前 , 3F
謝謝A大,除了前面C大的方式同樣也成功之外,A大的寫法也
10/30 11:06, 3F

10/30 11:07, 6年前 , 4F
可以成功轉換,終於了解R認日期的格式是YYYY-MM-DD
10/30 11:07, 4F

10/30 11:44, 6年前 , 5F
R認日期時間字串是可以指定格式的。看看 ?strftime
10/30 11:44, 5F

10/30 11:45, 6年前 , 6F
YYYY-MM-DD是預設先猜測的格式,但不同格式還是可讀的。
10/30 11:45, 6F
文章代碼(AID): #1RrnCeVC (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1RrnCeVC (R_Language)