r - 如何按日期对数据框进行分组?

标签 r aggregate

我有一个以下格式的 .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/

相关文章:

sql - 是否可以合并 "two queries with aggregate and group by"(结果集)?

postgresql - 如何获得忽略异常值的平均值?

R - 将多行并排连接成一行

R - 两个 data.tables 的匹配值的索引

mysql - 使用 NoSQL 添加使用统计信息的有效方法

sql - 为什么这个查询需要聚合?

sql-server - SQL返回值占子类别的百分比

r - 使用 'testthat' 测试包导出

r - 是否可以在特定文本字符串之后抓取一系列节点?

r - 如何调试引用类中的方法?