2014-10-01 63 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))