【问题标题】:How to rename data frame column by taking only the first value of the splitter string如何通过仅采用拆分器字符串的第一个值来重命名数据框列
【发布时间】:2017-03-29 09:49:37
【问题描述】:

我有以下数据框:

df <- structure(list(n.foldchange = c(2, 3, 5), s.foldchange = c(4, 
0.2, 100.3)), .Names = c("n.foldchange", "s.foldchange"), row.names = c(NA, 
-3L), class = "data.frame")

看起来像这样:

  n.foldchange s.foldchange
1            2          4.0
2            3          0.2
3            5        100.3

我想要做的是通过删除. 之后的值来重命名列。 屈服

             n            s
1            2          4.0
2            3          0.2
3            5        100.3

我该怎么做? (tidyverse 可能吗?)

【问题讨论】:

    标签: r dataframe tidyverse


    【解决方案1】:

    我们可以使用setnamesdplyr 重命名列的names

    library(dplyr)
    df %>%
     setnames(sub("\\..*", "", names(.)))
    
    df
    
    #  n     s
    #1 2   4.0
    #2 3   0.2
    #3 5 100.3
    

    【讨论】:

      【解决方案2】:

      我们可以使用sub 来匹配.(转义. (\\.) 以获得. 的字面意思,因为它是一个元字符,表示任何字符),然后是其他字符(.*)并将其替换为空格

      names(df) <- sub("\\..*", "", names(df))
      

      或使用substringsubstr

      names(df) <- substring(names(df), 1,1)
      

      【讨论】:

        【解决方案3】:

        另一种解决方案使用基本 R 函数 substringregexpr

        names(df) <- substring(names(df), 1, regexpr(".", names(df), fixed=TRUE)-1)
        
        df
          n     s
        1 2   4.0
        2 3   0.2
        3 5 100.3
        

        这里,regexpr 用于标识变量名中第一个点的位置。这个位置(减一)被赋予substring,它返回从第一个字符开始到第一个点之前结束的原始变量名的子字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-02-25
          • 1970-01-01
          • 2018-04-12
          • 2019-09-20
          • 1970-01-01
          • 2021-09-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多