【问题标题】:Choose variables based on name (simple regular expression)根据名称选择变量(简单的正则表达式)
【发布时间】:2010-11-27 00:30:41
【问题描述】:

我想合并变量名,暗示我应该对它们做什么。我想象一个数据框“调查”。

library(Rlab) # Needed for rbern() function.
survey <- data.frame(cbind(  
id = seq(1:10),  
likert_this = sample(seq(1:7),10, replace=T),  
likert_that = sample(seq(1:7), 10, replace=T),  
dim_bern_varx = rbern(10, 0.6),  
disc_1 = sample(letters[1:5],10,replace=T)))

现在我想对所有包含 likert 的变量做某些事情,对包含 bern 等变量的其他事情做一些事情。

如何在 R 中做到这一点?

【问题讨论】:

    标签: r dataframe subset


    【解决方案1】:

    您可以将grep()colnames() 一起使用:

    survey[,grep("bern", colnames(survey))]
    

    【讨论】:

      【解决方案2】:

      如果您有一系列想要获取的名称,也可以使用 match。也许您经常需要变量“脉搏”、“运动”、“身高”、“体重”和“年龄”,但它们有时会出现在不同的地方或与其他附加变量一起出现。您可以保存常用名称的向量,然后将它们与数据框进行匹配,并按照您想要的顺序获得仅包含标准列的新 df。

      basenames <- c("pulse", "exercise", "height", "weight", "age")
      get.columns <- match(basenames, names(dataframe))
      new.df <- dataframe[,get.columns]
      

      【讨论】:

        【解决方案3】:

        “operators”包允许一些类似 Perl 的语法:

        library(operators)
        
        survey[, colnames(survey) %~% "bern"]
        

        subset(survey, select = colnames(survey) %~% "bern")
        

        【讨论】:

          猜你喜欢
          • 2019-03-30
          • 2015-07-23
          • 1970-01-01
          • 2011-12-06
          • 2014-07-14
          • 1970-01-01
          • 2016-03-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多