【问题标题】:in R, group columns by column name instead of column number在 R 中,按列名而不是列号对列进行分组
【发布时间】:2019-12-26 18:29:13
【问题描述】:

在 R 中,有没有办法通过列名而不是列号对 data.frame 进行分组?

set.seed(1)

df <- data.frame(replicate(5, sample(c(1:99), 7, rep = TRUE)))

names(df) <- c("alpha","bravo","charlie","delta","echo"); df

通常,我会将 data.frame 的一部分分组,例如:

df[,2:4]

通常在包含数百列的大型数据集中,更难确定列号。我想使用列名而不是列号对列进行分组。以下给出了一条错误消息,但表明了我正在尝试做的事情。

df[,"bravo":"delta"]

有什么想法吗?

【问题讨论】:

    标签: r dataframe names


    【解决方案1】:

    使用dplyr,我们可以使用select中的列名范围

    library(dplyr)
    df %>%
       select(bravo:delta)
    #  bravo charlie delta
    #1    82      74    37
    #2    59       7    34
    #3    51      73    89
    #4    97      79    44
    #5    85      85    79
    #6    21      37    33
    #7    54      89    84
    

    【讨论】:

      【解决方案2】:

      在base R中,您可以使用which根据名称返回列索引:

      set.seed(1)
      df <- data.frame(replicate(5, sample(c(1:99), 7, rep = TRUE)))
      names(df) <- c("alpha","bravo","charlie","delta","echo")
      
      df[, which(colnames(df) == "bravo"):which(colnames(df) == "delta")]
      
      #   bravo charlie delta
      # 1    66      77    22
      # 2    63      50    65
      # 3     7      72    13
      # 4    21      99    27
      # 5    18      38    39
      # 6    69      77     2
      # 7    39      93    38
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-01
        • 1970-01-01
        • 2012-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多