我正在尝试将摘要列添加到数据框。尽管应该对每列应用汇总统计信息,但统计信息本身仅应基于条件行进行计算。
作为示例,给定此数据框:
$log
我想添加一个$null
列,但是平均值仅在x <- data.frame(usernum=rep(c(1,2,3,4),each=3),
final=rep(c(TRUE,TRUE,FALSE,FALSE)),
time=1:12)
时计算。我尝试过:
usernum.mean
但这给出了整体的平均值,而不是用户的平均值。我也尝试过:
final=TRUE
但这只会返回过滤后的数据帧:
library(tidyverse)
x %>%
group_by(usernum) %>%
mutate(user.mean = mean(x$time[x$final==TRUE]))
如何将这些方法应用于每个原始行?
答案 0 :(得分:2)
如果我们在x$
之后使用group_by
,它将返回整个列,而不是仅返回该特定组中的值。其次,TRUE/FALSE
是逻辑向量,因此我们不需要==
library(dplyr)
x %>%
group_by(usernum) %>%
mutate(user.mean = mean(time[final]))
我们可以使用$
的一个选项是.data
x %>%
group_by(usernum) %>%
mutate(user.mean = mean(.data$time[.data$final]))