Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
dplyr基于筛选、分组和汇总计算新列_R_Dplyr - Fatal编程技术网

dplyr基于筛选、分组和汇总计算新列

dplyr基于筛选、分组和汇总计算新列,r,dplyr,R,Dplyr,鉴于下面的foo,我试图根据y值子集的平均值计算三组id的y异常。我看不到dplyr语法的前进方向,但必须有一个简单的方法 也就是说,我想要一种方法来计算一个新的列yAnom,它是y-mean(y)的y值,当x时,可能如下所示: foo%>% #新列,其中仅包含要平均的值,其他位置为NA 当_5下的_x_=ifelse(x%)时,突变(y_) #新列,每组平均值 分组依据(id)%>% 变异(y_平均值=平均值(当_x_在_5下时为y_,na.rm=真))%>% #所需计算 突变(yAnom=y

鉴于下面的
foo
,我试图根据
y
值子集的平均值计算三组
id
y
异常。我看不到dplyr语法的前进方向,但必须有一个简单的方法


也就是说,我想要一种方法来计算一个新的列
yAnom
,它是
y-mean(y)
y
值,当
x时,可能如下所示:

foo%>%
#新列,其中仅包含要平均的值,其他位置为NA
当_5下的_x_=ifelse(x%)时,突变(y_)
#新列,每组平均值
分组依据(id)%>%
变异(y_平均值=平均值(当_x_在_5下时为y_,na.rm=真))%>%
#所需计算
突变(yAnom=y-y_平均值)

Ah!谢谢。获得正确长度的
ifelse
是我进行逻辑跳转所需要的。谢谢。
foo <- tibble(x = rep(1:10,3), y = rnorm(30), id = rep(letters[1:3],each=10))
# subtract y from mean of y for values of y when x <= 5 by group
#E.g., 
y5Means <- foo %>% group_by(id) %>% filter(x <= 5) %>% summarise(avg = mean(y)) %>% pull(avg)
foo$yAnom <- c(foo$y[foo$id == "a"] - y5Means[1],
               foo$y[foo$id == "b"] - y5Means[2],
               foo$y[foo$id == "c"] - y5Means[3])