-2

次のようなフレーム:

Col1       Col2
Name1      Attr1=10;Attr2=24; Attr3=5;Attr4=9;    
Name2      Attr1=1;Attr3=2.4; Attr4=16;Attr5=90;          
Name3      Attr1=2;Attr2=45; Attr4=122;Attr6=120; 

次の出力が必要です。

Col1      Attr1    Attr2   Attr3   Attr4   Attr5   Attr6   
Name1       10       24       5      9       NA      NA     
Name2       1        NA      2.4     16      90      NA     
Name3       2        45      NA      122     NA      120    

次に何を試すことができますか?

4

2 に答える 2

4

上記datの@agstudyの回答を使用して、次のように「reshape2」パッケージとともに私の「splitstackshape」パッケージを使用してみてください。

library(splitstackshape)
library(reshape2)

## Convert the rownames to an "ID" column
dat$ID <- rownames(dat)

## Split Col1 and Col2 into a "lonf" form
S1 <- concat.split.multiple(dat, c("Col1", "Col2"), ";", "long")

## Make that output even longer
S2 <- melt(S1[complete.cases(S1), ], id.vars=c("ID", "time"))

## Split again, this time on the "="
S3 <- concat.split.multiple(S2, "value", "=")

## Use `dcast` to get the data into the right shape
dcast(S3, ID ~ value_1, value.var="value_2")
#      ID Attr1 Attr2 Attr3 Attr4 Attr5 Attr6
# 1 Name1    10    24   5.0     9    NA    NA
# 2 Name2     1    NA   2.4    16    90    NA
# 3 Name3     2    45    NA   122    NA   120
于 2013-10-29T17:34:45.480 に答える