2013-07-29 26 views
0

我目前有一個df,我使用reshape2軟件包進行了蒸餾和重新組織。我的新DF現在包含了一些列具有被分隔的名稱由「_」,就像這樣:在R中分隔列標題

Location Type Time DO_ResultValue ENT_ResultValue TEMP_WATER_ResultValue 
CHE008  Out 7:58 3.19 mg/l  <10 MPN/100ml  13 deg C 
CHEFENCO Out 6:53 8.54 mg/l  34 MPN/100ml  12.7 deg C 
REVx2  In  7:19 6.72 mg/l  127 MPN/100ml  13.6 deg C 

的「_ResultValue」導致當我融化我的DF內,然後「ResultValue」投下變量轉化爲自己列。另請注意,TEMP_WATER中已有一個分隔符。我正在尋找的輸出是。

Location Type Time DO    ENT    TEMP_WATER 
CHE008  Out 7:58 3.19 mg/l  <10 MPN/100ml  13 deg C 
CHEFENCO Out 6:53 8.54 mg/l  34 MPN/100ml  12.7 deg C 
REVx2  In  7:19 6.72 mg/l  127 MPN/100ml  13.6 deg C 

我需要從標題中刪除「_ResultValue」,使得我可以匹配與要求的標題的用戶輸入列表中的標題和重新排序的列,以產生一個輸出表。因此,我不能使用某種類型的colnames()函數並手動重命名它們的名稱將隨着基於用戶輸入的代碼的每次運行而變化。

非常感謝幫助!謝謝!

回答

0

只需使用subnames()值工作。它會跳過沒有擴展名的字符串:

names(dfrm) <- sub("_ResultValue", "", names(dfrm)) 
+0

謝謝,迪文,這工作,非常緊湊! – Rnoob

3

這兩個功能可以幫助你。

> unlist(strsplit(x, "_ResultValue")) 
[1] "Location" "Type"  "Time"  "DO"   "ENT"  "TEMP_WATER" 
> gsub("_ResultValue", "", x) 
[1] "Location" "Type"  "Time"  "DO"   "ENT"  "TEMP_WATER" 
+0

謝謝,@RomanLustrik快速響應!我發現這很有效,並且可以將代碼調整爲其他用途。 – Rnoob