【问题标题】:remove first two characters for all column names in a data frame in R删除R中数据框中所有列名的前两个字符
【发布时间】:2016-03-06 23:28:43
【问题描述】:

有没有办法从数据框中的所有列名中按位置删除字符串

例如,如果我有这样的列名:

ab_sales1 kj_sales2 lm_sales3 .....pk_sales100
10         34         64      .....  288

我希望我的输出列名称类似于

  sales1 sales2 sales3 .....sales100
    10     34    64     .... 288

我知道字符串函数可以用于行,但我找不到列名的内容

【问题讨论】:

  • 试试colnames(df)<-sub("^[^_]*_","",colnames(df))
  • 你看?substr?colnames了吗?
  • 我不知道子字符串可以用于列名!

标签: r string substring


【解决方案1】:

指定我们要保留的字符,例如在colnames中保留字符1到5

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

这给了

       ab_sa      kj_sa      lm_sa       pk_sa
1  0.4766499 -0.1179655  0.7169561 -0.49368959
2 -1.5783553 -0.7481989  1.1739097  0.21988629
3 -1.2270336  2.4848512  0.3982539  1.19795271
4 -0.5443994  0.1170061  0.6622701 -0.48468645
5 -0.5591005  1.9600350  0.3473387  0.78863634
6 -0.9692961 -1.0195691 -0.5949841 -0.08180169

【讨论】:

    【解决方案2】:

    使用substring()

    df <- data.frame(ab_sales1   = rnorm(6),
                     kj_sales2   = rnorm(6),
                     lm_sales3   = rnorm(6),
                     pk_sales100 = rnorm(6))
    names(df) <- substring(names(df), 4)
    

    这给出了:

          sales1     sales2     sales3    sales100
    1  0.9486393  0.4727444 -1.5982694  0.01102933
    2  0.2980252 -0.7979390 -2.2574233 -0.37381571
    3 -0.5788511 -0.4873044  2.1668715 -0.26525840
    4 -1.0711035  1.0311850  0.3495215 -0.58936920
    5  0.2432300  1.7801097 -1.1982068  0.14810607
    6  1.6965152  0.9655296 -1.1000140 -1.02301506
    

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 2016-01-09
      • 2011-03-28
      • 2021-05-26
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2016-08-31
      相关资源
      最近更新 更多