【发布时间】:2019-12-17 06:06:02
【问题描述】:
我有以下虚拟数据 -
dummyData = data.table(A = c(2,2,2,3,4,2,3,2,4,3), B = c(1.2, 3.2, 4.3, 3.1, 5.4, 6.6, 3.5, 3.2, 4.2, 2.3), desired_Result = c(18.5, 18.5, 18.5, 18.5, 18.5, 18.5, 18.5, 18.5, 18.5, 18.5))
我想在这个 data.table 中添加一个新列,如下所示 - 在 B 列中选择 A == 2 的值,然后添加这些值并在原始 data.table 中创建一个新列 C
我不想要基于 A 组的 B 的总和,但结果应该只有 B 列的总和,其中 A == 2。以下是我尝试过的代码,但它给了我汇总的 data.table
dummyData[, actual_Result := sum(B), by = A]
下面应该是输出
A B desired_Result actual_Result
1: 2 1.2 18.5 18.5
2: 2 3.2 18.5 18.5
3: 2 4.3 18.5 18.5
4: 3 3.1 18.5 18.5
5: 4 5.4 18.5 18.5
6: 2 6.6 18.5 18.5
7: 3 3.5 18.5 18.5
8: 2 3.2 18.5 18.5
9: 4 4.2 18.5 18.5
10: 3 2.3 18.5 18.5
以下代码在 A 为 3 或 4 的行中给出 NA,我需要 actual_Result 中的所有行的值都为 18.5
dummyData[A == 2, actual_Result := sum(B), by = A]
A B desired_Result actual_Result C
1: 2 1.2 18.5 18.5 18.5
2: 2 3.2 18.5 18.5 18.5
3: 2 4.3 18.5 18.5 18.5
4: 3 3.1 18.5 8.9 NA
5: 4 5.4 18.5 9.6 NA
6: 2 6.6 18.5 18.5 18.5
7: 3 3.5 18.5 8.9 NA
8: 2 3.2 18.5 18.5 18.5
9: 4 4.2 18.5 9.6 NA
10: 3 2.3 18.5 8.9 NA
【问题讨论】:
标签: r data.table