删除R中数据框中所有列名的前两个字符
Posted
技术标签:
【中文标题】删除R中数据框中所有列名的前两个字符【英文标题】:remove first two characters for all column names in a data frame in 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
了吗?
我不知道子字符串可以用于列名!
【参考方案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
【讨论】:
以上是关于删除R中数据框中所有列名的前两个字符的主要内容,如果未能解决你的问题,请参考以下文章