我有一份样本调查表;人口统计学的东西。其中一列是country (factor)
,另一列是annual income
。现在,我需要计算每个国家/地区的平均值并使用data.frame
和相应的均值存储在新的country
中。它应该很简单,但我迷路了。数据如下所示:
Country Income($) Education ... ... ...
1. USA 90000 Phd
2. UK 94000 Undergrad
3. USA 94000 Highschool
4. UK 87000 Phd
5. Russia 77000 Undergrad
6. Norway 60000 Masters
7. Korea 90000 Phd
8. USA 110000 Masters
.
.
我需要最终结果,如:
USA UK Russia ...
98000 90000 75000
谢谢。
答案 0 :(得分:5)
数据示例:
dat <- read.table(text="Country Income Education
USA 90000 Phd
UK 94000 Undergrad
USA 94000 Highschool
UK 87000 Phd
Russia 77000 Undergrad
Norway 60000 Masters
Korea 90000 Phd
USA 110000 Masters",header=TRUE)
使用plyr
执行您想要的操作:
如果您的数据被调用dat
:
library(plyr)
newdf <- ddply(dat, .(Country), function(x) Countrymean = mean(x$Income))
# newdf <- ddply(dat, .(Country), function(x) data.frame(Income = mean(x$Income)))
和聚合:
newdf <- aggregate(Income ~ Country, data = dat, FUN = mean)
您最后显示的输出可能是tapply
?
tapply(dat$Income, dat$Country, mean)