dplyr:group_by和哪个
如果“标志”小于5,我希望为数据集的每个用户恢复“值”之和 我可以使用dplyr:group_by和哪个,r,dplyr,R,Dplyr,如果“标志”小于5,我希望为数据集的每个用户恢复“值”之和 我可以使用ifelse而不是which,但我不明白为什么这个代码不起作用: df <- data.frame( user_id = c(1, 1, 1, 2, 2, 2), flag = c(2,5, 3, 1, 2, 7), value = c(20, 10, 4, 3, 2, 2) ) df library(dplyr) df2 = df %>% group_by(user_id)
ifelse
而不是which
,但我不明白为什么这个代码不起作用:
df <- data.frame(
user_id = c(1, 1, 1, 2, 2, 2),
flag = c(2,5, 3, 1, 2, 7),
value = c(20, 10, 4, 3, 2, 2)
)
df
library(dplyr)
df2 =
df %>%
group_by(user_id) %>%
mutate(variable1 = sum(.$value[which(.$flag<5)]),
variable2 = sum(.$value[which(.$flag<10)])) %>%
ungroup()
df%
分组依据(用户id)%>%
mutate(variable1=sum(.$value[其中(.$flag您不需要$
df %>%
group_by(user_id) %>%
mutate(variable1= sum(value[flag<5]), variable2 = sum(value[flag<10]))
# user_id flag value variable1 variable2
#1 1 2 20 24 34
#2 1 5 10 24 34
#3 1 3 4 24 34
#4 2 1 3 5 7
#5 2 2 2 5 7
#6 2 7 2 5 7
这里有一个例子,我们通过使用和不使用得到不同的结果
df$flag[1:3] <- NA
df %>%
group_by(user_id) %>%
mutate(variable1 = sum(value[which(flag <5)]))
# user_id flag value variable1
#1 1 NA 20 0
#2 1 NA 10 0
#3 1 NA 4 0
#4 2 1 3 5
#5 2 2 2 5
#6 2 7 2 5
抱歉,df2%>%是一个错误,我刚刚编辑了为什么不需要的
df$flag[1:3] <- NA
df %>%
group_by(user_id) %>%
mutate(variable1 = sum(value[which(flag <5)]))
# user_id flag value variable1
#1 1 NA 20 0
#2 1 NA 10 0
#3 1 NA 4 0
#4 2 1 3 5
#5 2 2 2 5
#6 2 7 2 5
df %>%
group_by(user_id) %>%
mutate(variable1 = sum(value[flag <5]))
# user_id flag value variable1
#1 1 NA 20 NA
#2 1 NA 10 NA
#3 1 NA 4 NA
#4 2 1 3 5
#5 2 2 2 5
#6 2 7 2 5