【问题标题】:How to select some rows with specific rownames from a dataframe? [closed]如何从数据框中选择一些具有特定行名的行? [关闭]
【发布时间】:2013-09-26 19:27:42
【问题描述】:

我有一个包含多行的数据框。我想从此数据框中选择一些具有特定行名的行(例如stu2,stu3,stu5,stu9)。输入示例数据框如下:

        attr1 attr2 attr3 attr4
  stu1      0     0     1     0
  stu2     -1     1    -1     1
  stu3      1    -1     0    -1
  stu4      1    -1     1    -1
  stu5     -1     1     0     1
  stu6      1    -1     1     0
  stu7     -1    -1    -1     1
  stu8      1    -1     0    -1
  stu9     -1    -1     1    -1
  stu10    -1     1     0     1

预期输出:

        attr1 attr2 attr3 attr4
  stu2     -1     1    -1     1
  stu3      1    -1     0    -1
  stu5     -1     1     0     1
  stu9     -1    -1     1    -1

【问题讨论】:

  • 在我看来,这个问题是有效的。用户已经给出了预期的结果。是的,他似乎是一个对 R 了解最少的新手,但我相信这不应该对他不利。毕竟,我们在某些领域都是菜鸟。

标签: r dataframe subset rowname


【解决方案1】:
df <- data.frame(x=rnorm(10), y=rnorm(10))
rownames(df) <-  letters[1:10]
df[c('a','b'),]

【讨论】:

    【解决方案2】:

    假设您有一个名为 students 的数据框,您可以使用括号语法选择单个行或列,如下所示:

    • students[1,2] 将选择第 1 行和第 2 列,此处的结果将是单个单元格。
    • students[1,] 将选择第 1 行的所有内容,students[,2] 将选择第 2 列的所有内容。

    如果您想选择多行或多列,请使用值列表,如下所示:

    • students[c(1,3,4),] 将选择第 1、3 和 4 行,
    • students[c("stu1", "stu2"),] 将选择名为 stu1stu2 的行。

    希望我能帮上忙。

    【讨论】:

    • 如果要提取的行和列是连续的,那么students[:, :] 也可以。例如; student[11:20, 2:10] 选择第 11 到 20 行和第 2 到 10 列。但是,如果必须指定行名或列名,则 students[c("rowname1", "rowname2", ... ), c("colname1", "colname2"..] 可以使用。
    【解决方案3】:

    你也可以这样用:

    DF[paste0("stu",c(2,3,5,9)), ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      • 2021-07-13
      • 2015-04-16
      • 1970-01-01
      • 2018-08-23
      • 2013-11-06
      • 1970-01-01
      相关资源
      最近更新 更多