我首先使用aggregate
来获取数据框中一列的平均值,每列另一列:
meanDemVoteHouseState <- aggregate(congress$X2012.House.Dem.vote,
by = list(state = congress$state),
FUN = mean)
然后我想按顺序打印。首先,我查看了新数据框
str(meanDemVoteHouseState)
得到了
'data.frame': 50 obs. of 2 variables:
$ state: chr "AK" "AL" "AR" "AZ" ...
$ x : num 0.29 0.34 0.29 0.462 0.566 ...
显然,新变量现在称为“x”。
但是当我试图对此进行排序时:
meanDemVoteHouseState[order(x),]
我收到错误“对象'x'未找到”。
我尝试了很多其他的东西,但没有任何效果。
我错过了什么?
答案 0 :(得分:3)
你想要
meanDemVoteHouseState[order(meanDemVoteHouseState[,"x"]),]
如果你分两步进行,就会变得更加清晰
myind <- order(meanDemVoteHouseState[,"x"]) # need 'x' fully qualified
meanDemVoteHouseState[myind, ]
或者使用像with()
...
答案 1 :(得分:2)
可能更容易做到
meanDemVoteHouseState <- aggregate(X2012.House.Dem.vote ~ state,
data = congress, FUN = mean)
哪个会保留变量名称(例如它)。你还需要排序,比如
ord <- with(meanDemVoteHouseState, order(X2012.House.Dem.vote))
meanDemVoteHouseState <- meanDemVoteHouseState[ord, ]
此时您可能想为变量和对象选择一些较短的名称。