【问题标题】:Using rank() with subset [closed]将 rank() 与子集一起使用 [关闭]
【发布时间】:2014-07-19 00:43:05
【问题描述】:

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

           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() 来获取我的子集?

顺便说一句:数据来自

install.packages("gcookbook")

【问题讨论】:

  • 在您的样本数据中,这将是一个空子集,不是吗? Change 列中没有一个大于 40。
  • 你能用文字解释你想要的子集是什么吗?您能用语言解释一下您认为 rank() 的作用以及在 subset() 的上下文中 Change > 40 的含义吗?
  • 其实你是对的,我没有注意到。我从教科书中的一个例子开始工作。要回答你的问题,我不知道排名是做什么的。我试图阅读它,但我仍然不完全确定具有等级的子集正在尝试做什么

标签: r subset


【解决方案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 的行。当您在subset() 中使用rank(Change) > 40 时,它会根据Change 的值为您提供排名高于40 的行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

它们是等价的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多