以下是我的大型数据框的一部分
> a
SS29.SS29 PP1.PP1 SS4.SS4 CC43.CC43 FF57.FF57 NN23.NN23 MM25.MM25 KK9.KK9 MM55.MM55 AA75.AA75 SS88.SS88
1 669.9544 1.068153 35.86534 24.47688 1.058007 72.20306 1.854856 10.15414 0.08715572 0.02006310 0.1817582
2 651.2092 1.164428 37.59895 27.41381 1.095322 73.48029 1.927993 10.09958 0.09096972 0.02261701 0.1855258
我怎么能摆脱用点分隔的双列名?例如对于第一列,我想要SS29而不是重复的SS29.SS29,用于第二列PP1,依此类推。有没有自动化的方法呢?
答案 0 :(得分:1)
最简单的方法是使用sub
删除点.
字符后的子字符串。
names(a) <- sub('\\.[^.]*', '', names(a))
答案 1 :(得分:0)
您可以使用sub
names(a) <- sub("[.](.*)", "", names(a))
# [1] "SS29" "PP1" "SS4" "CC43" "FF57" "NN23"
# [7] "MM25" "KK9" "MM55" "AA75" "SS88"
或substring
substring(names(a), 1, regexpr("[.]", names(a))-1)
# [1] "SS29" "PP1" "SS4" "CC43" "FF57" "NN23"
# [7] "MM25" "KK9" "MM55" "AA75" "SS88"
或strsplit
names(a) <- unlist(strsplit(names(a), "[.](.*)"))
# [1] "SS29" "PP1" "SS4" "CC43" "FF57" "NN23"
# [7] "MM25" "KK9" "MM55" "AA75" "SS88"
答案 2 :(得分:-2)
您可以使用
指定新的列名colnames(a) <- new_column_names
要计算new_column_names
,您可以使用正则表达式,例如gsub
函数,如ssdecontrol建议的那样。
new_column_names <- gsub(...)