2014-10-01 78 views
1
摆脱重复字符

,这里是我的大数据帧得到一个列名中的R

> 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

我推荐查找正则表达式,一般情况下以及如何在R中使用它们。 – shadowtalker 2014-10-01 02:11:33

+1

看到您的示例,像这样? 'gsub(“\\ .. * $”,“”,x)'? – jazzurro 2014-10-01 02:13:35

回答

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

您可以

colnames(a) <- new_column_names 

指定新的列名计算new_column_names,您可以使用正则表达式,e.g ..的gsub功能,ssdecontrol建议。

new_column_names <- gsub(...) 
+2

所以你实际上不会提供解决方案? – 2014-10-01 02:15:44

+0

@RichardScriven:哦,我想我是。 – krlmlr 2014-10-01 02:19:16

1

最简单的方法是到u se sub删除字符.后的子字符串。

names(a) <- sub('\\.[^.]*', '', names(a))