按多列分组表:不能强制类型'关闭'到矢量类型' list'

时间:2016-01-11 12:03:36

标签: r data.table

我有一个包含多个列的表,我从R:

中的CSV文件加载
data <- read.table(file="test.csv",header=TRUE,sep="\t",check.names=FALSE)

数据格式如下:

id    timestamp    quantity    zone
1         123          1        A
2         123          1        A
3         124          1        A
4         124          1        B
5         125          1        B
5         125          1        B

我试图根据时间戳和区域获取每个实体的总数量。换句话说:在给定时间和给定位置有多少项目,因此结果应如下所示:

timestamp   zone   quantity
123          A        2
124          A        1
124          B        1
125          B        2

这里有很多类似的问题,但我总是遇到这个cannot coerce type 'closure' to vector of type 'list'错误。

目前,我正在尝试使用data.tables库仅分组一列,但我似乎无法使其正常工作。

你能看看我的剧本并告诉我,我做错了吗?

library(data.table)
frame <- read.table(file="test.csv",header=TRUE,sep="\t")
DT <- data.table(frame)
DT[,sum(quantity), by = timestamp]

感谢您的任何提示!

2 个答案:

答案 0 :(得分:1)

您可以按如下方式使用库dplyr:

library(dplyr)
df %>% group_by(timestamp, zone) %>% summarise(quantity = sum(quantity))

答案 1 :(得分:1)

我们可以使用aggregate

中的base R
aggregate(quantity~timestamp+zone, df, sum)
#      timestamp zone quantity
#1       123    A        2
#2       124    A        1
#3       124    B        1
#4       125    B        2

数据

df <- structure(list(id = c(1L, 2L, 3L, 4L, 5L, 5L), 
 timestamp = c(123L, 
123L, 124L, 124L, 125L, 125L), quantity = c(1L, 1L, 1L, 1L, 1L, 
1L), zone = c("A", "A", "A", "B", "B", "B")), .Names = c("id",
"timestamp", "quantity", "zone"), class = "data.frame", 
row.names = c(NA, -6L))