【问题标题】:How subselect all rows who's index number "greater than" some value in R?如何在 R 中选择索引号“大于”某个值的所有行?
【发布时间】:2022-01-24 19:21:00
【问题描述】:

假设我有一个如下的数据框:

A<-c(1,2,3,4)
B<-c(5,6,7,8)
C<-c(9,10,11,12)
data<-data.frame(A,B,C)

我知道我可以通过以下方式仅选择第 2 行和第 3 行:

data[2:3,]

我的问题是:我如何通过有效地说“索引号大于 1的所有行”来达到同样的效果? (即“数据”的行索引是 1、2 和 3。因此,通过请求行索引“>1”,我应该只获得第 2 行和第 3 行。)

【问题讨论】:

  • 您可以选择除第一行之外的所有内容:data[-1, ]

标签: r subset


【解决方案1】:

您可以使用nrow 获取总行数,然后使用大于运算符。

data[1:nrow(data) > 1, ]

另外,例如,如果您需要所有大于 2 的索引:

data[-c(1:2), ]

【讨论】:

    【解决方案2】:

    tidyverse 选项。与使用基本 R 相比,这有点冗长。要保留行索引,您必须将行名称更改为列 filter,然后将具有行名称的列更改回实际的行名称。 filter 不保留行名。

    library(tidyverse)
    
    data %>%
      rownames_to_column() %>%
      filter(rowname > 1) %>%
      column_to_rownames()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多