我有一个包含多个列的表,我从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]
感谢您的任何提示!
答案 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))