我正在尝试将ddply用于我的示例数据(调用Z),如下所示:
id y
1001 10
1001 11
1200 12
2001 10
2030 12
2100 32
3100 10
3190 13
4100 45
5100 67
5670 56
...
10001 54
10345 45
11234 32
and so on
Run Code Online (Sandbox Code Playgroud)
我的目的是找到以1开头的id的总和(ie1001,1200,..),2(2100),3(3100,3190),4,... 10,11,... 65 .例如,对于以1开头的id,总和为10 + 11 + 12 = 33,对于以2开头的id,它为32.
我想使用apply函数,如下所示:
>s <- split(z,z$id)
>lapply(s, function(x) colSums(x[, c("y")]))
Run Code Online (Sandbox Code Playgroud)
但是,这给了我每个唯一ID的总和,而不是我正在寻找的那个.任何有关这方面的建议都将受到高度赞赏.
这是一个用于执行整数除法的data.table解决方案%/%(返回数千)
library(data.table)
DT <- data.table(z)
x <- DT[,list(sum_y = sum(y)), by = list(id = id %/% 1000)]
x
id sum_y
1: 1 33
2: 2 54
3: 3 23
4: 4 45
5: 5 123
6: 10 99
Run Code Online (Sandbox Code Playgroud)
你可以做类似的 ddply
ddply(z, .(id = id %/% 1000 ), summarize, sum_y = sum(y))
id sum_y
1 1 33
2 2 54
3 3 23
4 4 45
5 5 123
6 10 99
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
569 次 |
| 最近记录: |