name <- c("a","a","a","b","b","a","a")
itr <- c(1,1,2,1,1,3,3)
var_bin <- c(1,1,0,1,1,1,1)
sum_var_bin_exp_col <- c(2,2,2,1,1,2,2)
df <- data.frame(name,itr,var_bin,sum_var_bin_exp_col)
我想创建一个列(sum_var_bin_exp_col
),它基于col var_bin
&amp;中给出的值。 group_by
name
和itr
列。
sum_var_bin_exp_col
基本上是var_bin
col的二元值。
itr
&#34; a&#34; itr
1,itr
2和name
3 var_bin
1的name
分别为1,0,1。
所以,总和是2 ......我只计算一次重复值。
答案 0 :(得分:1)
如果我理解了所需的结果,您可以使用dplyr
来实现它。
library(dplyr)
df_res <- df %>%
group_by(name, itr) %>%
mutate(sum_var_bin_exp = sum(var_bin)
df_res
## A tibble: 7 x 5
## Groups: name, itr [4]
# name itr var_bin sum_var_bin_exp_col sum_var_bin_exp
# <fct> <dbl> <dbl> <dbl> <dbl>
#1 a 1.00 1.00 2.00 2.00
#2 a 1.00 1.00 2.00 2.00
#3 a 2.00 0 2.00 0
#4 b 1.00 1.00 1.00 2.00
#5 b 1.00 1.00 1.00 2.00
#6 a 3.00 1.00 2.00 2.00
#7 a 3.00 1.00 2.00 2.00