Re: [问题] 资料次数依照日序排列

楼主: andrew43 (讨厌有好心推文后删文者)   2018-10-29 22:03:17
转成日期物件会好处理很多。
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
:
作者: clansoda (小笨)   2018-10-29 22:25:00
原来strsplit可以这样分,直接塞两个值进去学到一招了,感谢分享
作者: demonio (亦鲁)   2018-10-30 11:06:00
谢谢A大,除了前面C大的方式同样也成功之外,A大的写法也可以成功转换,终于了解R认日期的格式是YYYY-MM-DD
楼主: andrew43 (讨厌有好心推文后删文者)   2018-10-30 11:44:00
R认日期时间字串是可以指定格式的。看看 ?strftimeYYYY-MM-DD是默认先猜测的格式,但不同格式还是可读的。

Links booklink

Contact Us: admin [ a t ] ucptt.com