R data.table:在一条语句中将data.table的条件摘要合并回原始data.table
我有以下虚拟数据-R data.table:在一条语句中将data.table的条件摘要合并回原始data.table,r,data.table,R,Data.table,我有以下虚拟数据- 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中添加一个新列,如下所示- 选择A==2的B列中的值,然后添加这些值,并在
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中添加一个新列,如下所示-
选择A==2的B列中的值,然后添加这些值,并在原始data.table中创建一个新的C列
dummyData[, actual_Result := sum(B), by = A]
我不想要基于组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,我需要实际_结果中的所有行的值为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
你可以
library(data.table)
dummyData[, actual_Result := sum(B[A == 2])]
dummyData
# 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
哪一个使用基数R
dummyData$actual_Result <- sum(dummyData$B[dummyData$A == 2])
dummyData$actual\u Result在dplyr
中,我们可以使用
library(dplyr)
dummyData %>%
mutate(actual_Result = sum(B[A ==2]))