分别在每列上按组重复进行均值估算

时间:2019-07-10 10:44:38

标签: r group-by

我想按级别(5个级别)估算47个因子变量的加权平均值。我想分别为每个变量执行此操作。感兴趣的47个变量称为Skill_1,skill_2 .... skill_47

我知道如何对一列进行此操作:

earning<-group_by(mydata, skill_1)

earning_by<-summarise(earning, earw=weighted.mean(ear, weight, na.rm=TRUE))

我得到的结果如下(通过5个技能级别_1赚钱)

skill_1     earw
   <dbl>    <dbl>
1      1   22568.
2      2   21813.
3      3   20361.
4      4   19219.
5      5   14121.

但是我不知道如何单独处理所有47个变量。我宁愿避免这样做47次。

我尝试了group_by_at:

earning<-group_by_at(mydata, .vars = vars(153:200)) 

但在我的情况下不起作用,它将所有变量组合在一起。

我也尝试编写一个循环,因为实际上我想重复执行47次相同的操作,但是我没有成功。

非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以尝试使用gatherspread

mydata <- tibble(skill_1 = sample(1:5, 100, replace=T),
                 skill_2 = sample(1:5, 100, replace=T), 
                 skill_3= sample(1:5, 100, replace=T), 
                 ear = runif(100, 0, 1))

  mydata %>% 
      gather("key", "value", contains("skill")) %>% 
      group_by(key, value) %>% 
      summarise(mean = mean(ear)) %>% 
      spread("key", "mean")