【发布时间】:2017-08-14 17:31:59
【问题描述】:
假设我有以下 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
如果我想按类别汇总频率,我会使用以下内容:
data[, sum(Frequency), by = Category]
但是,假设我想将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
Sum() 不会计算 ten 与 five 的频率
【问题讨论】:
-
好吧,显然,将您的条件放入 data.table 的 i 参数中。
-
测试您的代码,这会引发警告。此外,显示所需的输出 - 不清楚您是否想要没有行满足条件的组。
-
我认为在事后添加另一个问题是不正确的...而是为此打开一个新问题...但是您需要在执行任何操作之前将频率列转换为数字数学就可以了。这是一个例子:stackoverflow.com/questions/18332463/…
标签: r dataframe data.table aggregate