将rank()与子集一起使用

将rank()与子集一起使用,r,subset,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

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

           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
我试图提取一个变化>40的子集。 当我使用

subset(uspopchange, rank(Change)>40)
它起作用了 但是当我使用

subset(uspopchange, Change > 40)
结果一无所获。 此外,如果我使用

subset(uspopchange, Change > 16.9)
它也起作用。 为什么会这样?为什么我需要用户
rank()
来获取我的子集

顺便说一句:数据来自

install.packages("gcookbook")
没有
Change
大于40的行。当您在
子集()
中使用
rank(Change)>40
时,它将根据
Change
的值为您提供排名高于40的行。由于您的数据中有50行(
Change
的长度为50),因此您将得到排名为41、42、43等的行,50.

> Top10 <- subset(uspopchange, rank(Change)>40)
> Top10[order(Top10$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
11        Georgia  GA  South   18.3
10        Florida  FL  South   17.6
6        Colorado  CO   West   16.9
41 South Carolina  SC  South   15.3
##
> uspopchange[order(uspopchange$Change,decreasing=TRUE),][1:10,]
            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
11        Georgia  GA  South   18.3
10        Florida  FL  South   17.6
6        Colorado  CO   West   16.9
41 South Carolina  SC  South   15.3
>Top10(40)
>Top10[订单(Top10$Change,递减=TRUE),]
国家区域变化
内华达州西29 35.1
3亚利桑那州西24.6
犹他州犹他州西部45号23.8
13爱达荷州西21.1
德克萨斯州南部44 20.6
34北卡罗来纳州南部18.5
11乔治亚州南18.3
佛罗里达州南部10号17.6
6科罗拉多州西部16.9
41南卡罗来纳州南部15.3
##
>uspopchange[订单(uspopchange$Change,递减=真),][1:10,]
国家区域变化
内华达州西29 35.1
3亚利桑那州西24.6
犹他州犹他州西部45号23.8
13爱达荷州西21.1
德克萨斯州南部44 20.6
34北卡罗来纳州南部18.5
11乔治亚州南18.3
佛罗里达州南部10号17.6
6科罗拉多州西部16.9
41南卡罗来纳州南部15.3

这些是等价的。

在您的示例数据中,这将是一个空子集,不是吗?
Change
列中没有一个大于40。您能用文字说明所需的子集是什么吗?你能用语言解释一下你认为rank()做了什么,以及在subset()的上下文中Change>40意味着什么吗?实际上你是对的,我没有注意到这一点。我是从课本上的一个例子开始工作的。回答你的问题,我不知道排名是什么。我试着读了一遍,但我仍然不能完全确定那个带有秩的子集想要做什么
> Top10 <- subset(uspopchange, rank(Change)>40)
> Top10[order(Top10$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
11        Georgia  GA  South   18.3
10        Florida  FL  South   17.6
6        Colorado  CO   West   16.9
41 South Carolina  SC  South   15.3
##
> uspopchange[order(uspopchange$Change,decreasing=TRUE),][1:10,]
            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
11        Georgia  GA  South   18.3
10        Florida  FL  South   17.6
6        Colorado  CO   West   16.9
41 South Carolina  SC  South   15.3