我是R的新人,我一直坚持按时匹配一段时间。 我有这个日期框架,其中包含一个日期列和一个小时列。它看起来像以下
Date Hour
June1 0
June1 1
June1 2
June1 0
June1 1
June2 0
June2 1
我希望能够按日期将所有相同的小时匹配。小时数从0到23。因此,例如,我希望6月1日的所有小时1匹配在一起,并且6月1日的所有小时2都匹配(依此类推)。这可能是一个简单的解决方案,但我无法弄清楚):我真的很感激一些帮助!
答案 0 :(得分:1)
您可以使用plyr包中的ddply
:
install.packages("plyr")
library(plyr)
ddply(mydata,.(Date,Hour),transform,mean.value=mean(value)
注意:我假设您希望匹配找出另一列名为value
的平均值/中位数/总和等。此外,在使用上述功能之前,Date
需要格式化为as.Date()
。
答案 1 :(得分:0)
df <- read.table(textConnection("Date Hour
June1 0
June1 1
June1 2
June1 0
June1 1
June2 0
June2 1"), header = TRUE)
library(dplyr)
# To get counts by day
df %>% group_by(Date) %>% tally(Hour) %>% data.frame
# To group them by day and arrange by hour
df %>% arrange(Date, Hour)
目前还不完全清楚你想要什么,但从你的措辞来看,似乎你想要按日期排列小时。
答案 2 :(得分:0)
如果我理解你的问题,我认为你正在寻找对数组进行排序。 order
函数非常适合这种情况。像
> df[order(df$Date, df$Hour),]
Date Hour
1 June1 0
4 June1 0
2 June1 1
5 June1 1
3 June1 2
6 June2 0
7 June2 1
将实现这一点。
那就是说,听起来你可能没有问正确的问题。在数据处理管道中较早开始可能更容易,因为如何将June1
之类的字符串放入数据集而不是更加格式化的日期。理想情况下,您希望使用其中一个内置R类来表示日期或日期时间来处理这些类型,以便在未来更轻松地进行分析和绘图。