【发布时间】:2018-01-17 01:06:59
【问题描述】:
我看过几篇关于在变异中获取 rowMeans 类型的结果的帖子。例如和dplyr - using mutate() like rowmeans() -- 但我想让另一个变量充当过滤器。
我知道这个数据不整齐,“f#”和“d#”变量可以reshape long,然后转换为“f”和“d”,然后过滤“f”并总结“d” .但是有没有办法在不重塑的情况下做到这一点?我设计了下面的代码
library(tidyverse)
x<-data.frame(f1=c(1,1), f2=c(1,0), f3=c(1,1),
d1=c(3,2), d2=c(4,8), d3=c(8,16))
x
x %>%
rowwise() %>%
mutate(agg=sum(f1*d1, f2*d2, f3*d3) / sum(f1, f2, f3) )
#Source: local data frame [2 x 7]
#Groups: <by row>
# A tibble: 2 x 7
# f1 f2 f3 d1 d2 d3 agg
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 1.00 1.00 1.00 3.00 4.00 8.00 5.00
#2 1.00 0 1.00 2.00 8.00 16.0 9.00
但是,当有很多变量时,我失去了使用范围的能力,所以我不能说 "f1*d1":"f2*d2" - 有没有更通用的方法?
【问题讨论】: