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)
私はなんとかすべての値を計算できましたが、結果をフォーマットできませんでした。そのため、2つの時間グループを異なる行に配置し、合計と平均を同じ行に保持しました。
ここで編集するのはコードです:
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
どうもありがとう。