Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R data.table:在一条语句中将data.table的条件摘要合并回原始data.table_R_Data.table - Fatal编程技术网

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]))