2012-12-10 166 views
2

我有連接成單個塔測量以下的數據幀,通過一些分隔符隔開:熔融數據幀和分割值

df <- data.frame(v1=c(1,2), v2=c("a;b;c", "d;e;f")) 
df 
    v1 v2 
    1 1 a;b;c 
    2 2 d;e;f;g 

我想熔融/轉化成以下格式:

 v1 v2 
    1 1 a 
    2 1 b 
    3 1 c 
    4 2 d 
    5 2 e 
    6 2 f 
    7 2 g 

有沒有優雅的解決方案?

Thx!

+0

是否有總是以相同數量的項目V2的每一行(在你的例子中是3)? –

+0

否,可以有0..n個值 – behas

回答

5

你可以用strsplit分割字符串。

拆分在第二列中的字符串:

splitted <- strsplit(as.character(df$v2), ";") 

創建新的數據幀:

data.frame(v1 = rep.int(df$v1, sapply(splitted, length)), v2 = unlist(splitted)) 

結果:

v1 v2 
1 1 a 
2 1 b 
3 1 c 
4 2 d 
5 2 e 
6 2 f