使用rank()和子集

时间:2014-07-19 00:43:05

标签: r subset

我在这里得到了这些数据:

           State Abb Region Change
3         Arizona  AZ   West   24.6
6        Colorado  CO   West   16.9
10        Florida  FL  South   17.6
11        Georgia  GA  South   18.3
13          Idaho  ID   West   21.1
29         Nevada  NV   West   35.1
34 North Carolina  NC  South   18.5
41 South Carolina  SC  South   15.3
44          Texas  TX  South   20.6
45           Utah  UT   West   23.8

我试图提取一个子集,其中Change> 40。 当我使用

subset(uspopchange, rank(Change)>40)

它有效 但是当我使用

subset(uspopchange, Change > 40)
它没有任何结果。 此外,如果我使用

subset(uspopchange, Change > 16.9)

它也有效。 为什么这样做?为什么我需要用rank()来获取我的子集?

BTW:数据来自

install.packages("gcookbook")

1 个答案:

答案 0 :(得分:1)

> library(gcookbook)
> data(uspopchange)
> head(uspopchange[order(uspopchange$Change,decreasing=TRUE),])
            State Abb Region Change
29         Nevada  NV   West   35.1
3         Arizona  AZ   West   24.6
45           Utah  UT   West   23.8
13          Idaho  ID   West   21.1
44          Texas  TX  South   20.6
34 North Carolina  NC  South   18.5

没有Change大于40的行。当您在rank(Change) > 40中使用subset()时,它会根据{{1}的值为您提供行排名高于40.因为数据中有50行(Change的长度为50),所以得到排名为41,42,43,...,50的行。

Change

这些是等价的。