我有一个以下格式的 .csv 文件:
Date , Time , Value
1899-01-01 , 4:00:00 , 1
1899-01-01 , 4:01:00 , 2
1899-01-01 , 4:02:00 , 3
1899-01-01 , 4:03:00 , 4
1899-01-01 , 4:04:00 , 5
1900-08-22 , 22:00:00 , 101
1900-08-22 , 22:01:00 , 102
2013-08-29 , 4:00:00 , 1000
2013-02-29 , 4:02:00 , 1001
2013-02-29 , 4:03:00 , 1002
是否可以按日期分组
以生成以下格式的data.table
:
Date , Vector(variable length)
1899-02-28, c(1,2,3,4,5)
1900-08-22, c(101,102)
1900-08-22, c(1000,1001,1002)
这是我迄今为止最好的(经过一天的尝试):
raw <- read.csv(pathName, header = TRUE, stringsAsFactors = FALSE)
groupedByDate <- split(raw, raw$Date)
但是,这似乎会生成一个非常宽的表格,每个日期有一列,这与我想要的不太接近。
最佳答案
在名为“mydf”的 data.frame
上使用 aggregate
怎么样:
> temp <- aggregate(Value ~ Date, mydf, as.vector)
> temp
Date Value
1 1899-01-01 1, 2, 3, 4, 5
2 1900-08-22 101, 102
3 2013-02-29 1001, 1002
4 2013-08-29 1000
“值”列现在是一个包含向量的列表
。
> temp$Value
$`0`
[1] 1 2 3 4 5
$`1`
[1] 101 102
$`2`
[1] 1001 1002
$`3`
[1] 1000
您可能正在寻找的 split
是:
> split(mydf$Value, mydf$Date)
$`1899-01-01 `
[1] 1 2 3 4 5
$`1900-08-22 `
[1] 101 102
$`2013-02-29 `
[1] 1001 1002
$`2013-08-29 `
[1] 1000
关于r - 如何按日期对数据框进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15142660/