Sha*_*ang 2 aggregate r dataframe data.table
假设我有以下 R data.table(尽管我也很高兴使用基础 R、data.frame)
library(data.table)
dt = data.table(Category=c("First","First","First","Second","Third", "Third", "Second"), Frequency=c(10,15,5,2,14,20,3), times = c(0, 0, 0, 3, 3, 1))
> dt
Category Frequency times
1: First 10 0
2: First 15 0
3: First 5 0
4: Second 2 3
5: Third 14 3
6: Third 20 1
7: Second 3 0
Run Code Online (Sandbox Code Playgroud)
如果我想按类别汇总频率,我将使用以下内容:
data[, sum(Frequency), by = Category]
Run Code Online (Sandbox Code Playgroud)
但是,假设我想求和Frequency当Category且仅当times非零且不等于NA?
如何根据单独列的值使该总和成为条件?
编辑:对这个明显的问题表示歉意。快速补充:如果某一列的元素是字符串怎么办?
例如
> dt
Category Frequency times
1: First ten 0
2: First ten 0
3: First five 0
4: Second five 3
5: Third five 3
6: Third five 1
7: Second ten 0
Run Code Online (Sandbox Code Playgroud)
Sum()不会计算tenvs的频率five
记住逻辑data.table:dt[i, j, by],即dt使用子集行i,然后计算j分组依据by。
dt[times != 0 & !is.na(times), sum(Frequency), by = Category]
Category V1
1: Second 2
2: Third 34
Run Code Online (Sandbox Code Playgroud)