R:按日期匹配小时数

时间:2013-08-09 20:09:30

标签: r string-matching

我是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都匹配(依此类推)。这可能是一个简单的解决方案,但我无法弄清楚):我真的很感激一些帮助!

3 个答案:

答案 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类来表示日期或日期时间来处理这些类型,以便在未来更轻松地进行分析和绘图。