1

次のデータフレームがあるとします

> df <- data.frame(var1 = c("A", "B", "C", "D"),            
                 var2 = c("test", "5 | 6", "X & Y", "M | N | O"))
> df
  var1          var2
1    A          test
2    B         5 | 6
3    C         X & Y
4    D     M | N | O

と演算子で値を分割し、それらを別々の行として に入れるにはどうすればよいvar2ですか。出力は次のようになります。|&same data.frame

> df
  var1          var2
1    A          test
2    B             5
3    B             6
4    C             X
5    C             Y
6    D             M
7    D             N
8    D             O

私はstrsplitそれを達成するために for ループを使用しました。しかし、これはあまりうまくコーディングされていないと思います。より良いR-wayでこれを達成する方法はありますか?

4

2 に答える 2

6

次のようなことができます。

s <- strsplit(df[,2], " \\| | & ")
cbind(var1=rep(df[,1], sapply(s, length)), var2=unlist(s))
     var1 var2  
[1,] "A"  "test"
[2,] "B"  "5"  
[3,] "B"  "6"  
[4,] "C"  "X"  
[5,] "C"  "Y"  
[6,] "D"  "M"  
[7,] "D"  "N" 
[8,] "D"  "O"  
于 2012-07-17T07:50:43.110 に答える