当前位置:  开发笔记 > 编程语言 > 正文

替换除R中所有行中具有平均值的列值之外的所有列值

如何解决《替换除R中所有行中具有平均值的列值之外的所有列值》经验,为你挑选了1个好方法。

假设我有如下数据帧,

> test <- data.frame(a=6:15, b=14:23, c= rep(1:5,2))
> test
    a  b c
1   6 14 1
2   7 15 2
3   8 16 3
4   9 17 4
5  10 18 5
6  11 19 1
7  12 20 2
8  13 21 3
9  14 22 4
10 15 23 5

我想制作如下数据框,

     a    b c
1 10.5 18.5 1
2 10.5 18.5 2
3 10.5 18.5 3
4 10.5 18.5 4
5 10.5 18.5 5

价值在哪里,

> mean(test$a)
[1] 10.5
> mean(test$b)
[1] 18.5
> unique(test$c)
[1] 1 2 3 4 5

任何人都可以帮我转换数据帧吗?我的尝试是,

data.frame(a=rep(mean(test$a),5), b=rep(mean(test$b),5), c=unique(test$c))

但是当我有更多的变量时,使用这种方式变得困难,而且它也没有效率.有没有一种简单而好的方法来做到这一点?



1> nicola..:

你可以试试:

data.frame(c(list(c=unique(test$c)),lapply(test[-3],mean)))
#  c    a    b
#1 1 10.5 18.5
#2 2 10.5 18.5
#3 3 10.5 18.5
#4 4 10.5 18.5
#5 5 10.5 18.5 

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有