【问题标题】:Select columns with spaced heading in R [duplicate]在R中选择带有间隔标题的列[重复]
【发布时间】:2021-07-28 07:21:57
【问题描述】:

我通过选择特定列来设置数据框。如下面的示例数据,一个列标题(即 80% 高度)是间隔的。

df<-data.frame(x1=c(1020,2053,1840,3301,2094),
           x11=c(816,1642.4,1472,2640.8,1675.2),
           x2=c(584,187,746,177,483))
names(df)<-c("height","80% height","length")

我想选择前两列。 从链接Extracting specific columns from a data frame 可以找到有关在数据框中提取特定列的有用讨论和解决方案。按照链接,我尝试了几种方法,包括

library(dplyr)
df %>% subset(df, select=c(height,"80% height"))

但最终会出现错误并伴随以下消息

Error in subset.data.frame(., df, select = c(height, "80% height")) : 
'subset' must be logical

我想解决这个问题。感谢您的帮助!

【问题讨论】:

    标签: r dataframe dplyr subset


    【解决方案1】:

    我们可以使用反引号来选择那些不常见的名称,即不以字母开头的列名

    subset(df, select = c(height, `80% height`))
    

    -输出

    #   height 80% height
    #1   1020      816.0
    #2   2053     1642.4
    #3   1840     1472.0
    #4   3301     2640.8
    #5   2094     1675.2
    

    另外,dplyr 使用并指定 df 两次是不需要的。我们可以从dplyr 获得select 函数

    library(dplyr)
    df %>%
         select(height, `80% height`)
    

    -输出

    #   height 80% height
    #1   1020      816.0
    #2   2053     1642.4
    #3   1840     1472.0
    #4   3301     2640.8
    #5   2094     1675.2
    

    删除空格并为那些以数字开头的列名附加一个字母可能会更好。 clean_names 来自 janitor 确实

    library(janitor)
    df %>%
        clean_names()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 2021-12-10
      • 2018-12-25
      相关资源
      最近更新 更多