我正在尝试为 data.table 中的某些组返回多个列。我使用一个函数来分隔一个值列表并为每个组计算一个向量。我想为这样的表返回这些值
address1, time1, value1
address1, time2, value2
address1, time3, value3
我将 time1-time2 分组在一个函数中,并希望返回类似这样的内容
address1,sum(value1), mean(value1) (by timegr1)
address1,sum(value2+value3),mean(value2+value3) (by timegr2)
我设法计算了所有值,只是无法格式化结果,因此它将两个时间组放在不同的行中,并将总和和平均值保持在同一行中。
编辑这里是代码:
v <- data.table(address =c(1,1,1,1),time=c(1,50,51,52),value=c(1,2,3,4))
fun <- function(time,value) {
data <- data.table(time=time,value=value)
#this split depends on a number of criteria
k <- split(data,c(0,rep(1,nrow(data)-1)))
k1 <- sapply(k,function(x) c(mean(x$value),sum(x$value)))
return(k1)
}
v1 <- v[,fun(time,value),by=address]
V1作为
address V1
1: 1 1
2: 1 1
3: 1 3
4: 1 9
我真的需要类似的东西
address mean sum
1: 1 1 1
2: 1 3 9
多谢。