2015-10-15 24 views
0

假設我有一個數據幀:dplyr:獨立汽車名「到」基於「山坳」 -columns

require(dplyr) 
df <- data.frame(COL1 = c("a1 a2 a3", "b1 b2 b3", "c1 c2 c3"), 
       COL2 = c("x", "y", "z"), 
       COL3 = c("1", "2", "3")) 

我想要的結果是

COL1_1 COL1_2 COL1_3 COL2 COL3 
1  a1  a2  a3 x 1 
2  b1  b2  b3 y 2 
3  c1  c2  c3 z 3 

我有什麼權利現在這樣做是

df %>% 
    separate(col = COL1, sep = " ", into = c("COL1_1", "COL1_2", "COL1_3")) 

是否有辦法來自動錶達的into一部分?

類似的東西使用原始列名COL1並連接與標_ii作爲的「子欄目」。該方法需要自動適應不同數目的「子列」,例如, a1, a2, a3,..., an

+0

我們可以用'read.table'即'cbind做到這一點(函數read.table(文= as.character(DF $ COL1)),DF)' – akrun

+0

實現自動化'分開(df,col = COL1,into = paste0(「COL1_」,1:3))? –

+0

感謝您的回覆! akrun:這個提議的問題在於,這會保留原始列並且不會轉換它。大衛:問題是我仍然必須手工指定'3'和原始列名稱'COL1_' – Boern

回答

1

這可以用cSplit

library(splitstackshape) 
cSplit(df, 'COL1', ' ')