0

我首先用来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'”。

我尝试了许多其他的东西,但没有任何效果。

我错过了什么?

4

2 回答 2

3

你要

 meanDemVoteHouseState[order(meanDemVoteHouseState[,"x"]),]

如果你分两步做,就会变得更清晰

 myind <- order(meanDemVoteHouseState[,"x"])   # need 'x' fully qualified
 meanDemVoteHouseState[myind, ]

或者使用类似with()...

于 2013-06-06T19:46:03.470 回答
2

这样做可能会更容易

meanDemVoteHouseState <- aggregate(X2012.House.Dem.vote ~ state,
                                   data = congress, FUN = mean)

这将维护变量名称(例如它)。你仍然需要排序,说

ord <- with(meanDemVoteHouseState, order(X2012.House.Dem.vote))
meanDemVoteHouseState <- meanDemVoteHouseState[ord, ]

此时您可能希望为变量和对象选择一些较短的名称。

于 2013-06-06T19:50:05.323 回答