我想按级别(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次相同的操作,但是我没有成功。
非常感谢!
答案 0 :(得分:1)
您可以尝试使用gather
和spread
:
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")