列拆分为R

时间:2017-05-25 17:22:50

标签: r

我的数据看起来像

df <- data.frame(user_id=c('13','15'), 
                 answer_id = c('{"row[0][0]":"A","row[0][1]":"B","row[0][2]":"C","row[0][3]":"D","row[1][0]":"A1","row[1][1]":"B1","row[1][2]":"C1","row[1][3]":"D1"}', '{"row[0][0]":"W","row[0][1]":"X","row[0][2]":"Y","row[0][3]":"Z","row[1][0]":"W1","row[1][1]":"X1","row[1][2]":"Y1","row[1][3]":"Z1"}
'))

所需的数据视图

user_id       answer_id1      answer_id2    answer_id3     answer_id4
13                 A                B             C            D
13                 A1               B1            C1           D1
15                 W                X             Y            Z
15                 W1               X1            Y1           Z1

我是R的新人,希望尽快得到解决方案

2 个答案:

答案 0 :(得分:2)

可能不是最佳解决方案,但是这可以使用<tr ng-repeat="value in sd.data | unique:'syscode'" > stringr和&amp ;;来自您的示例输入到您想要的输出purrr。有关tidyr调用中使用的正则表达式的说明,请参阅regex101

stringr::str_match_all()

答案 1 :(得分:1)

第2列看起来像JSON,所以你可以做这样的事情,把它变成你可以用...做的事情的表格。

library(rjson)
df2 <- lapply(1:nrow(df),function(i) 
            data.frame(user=df[i,1],
            answer=unlist(fromJSON(as.character(df[i,2]))),stringsAsFactors = FALSE))
df2 <- do.call(rbind,df2)
df2[,"r1"] <- gsub(".+\\[(\\d)]\\[(\\d)].*","\\1",rownames(df2)) 
df2[,"r2"] <- gsub(".+\\[(\\d)]\\[(\\d)].*","\\2",rownames(df2)) 

df2
           user answer r1 r2
row[0][0]    13      A  0  0
row[0][1]    13      B  0  1
row[0][2]    13      C  0  2
row[0][3]    13      D  0  3
row[1][0]    13     A1  1  0
row[1][1]    13     B1  1  1
row[1][2]    13     C1  1  2
row[1][3]    13     D1  1  3
row[0][0]1   15      W  0  0
row[0][1]1   15      X  0  1
row[0][2]1   15      Y  0  2
row[0][3]1   15      Z  0  3
row[1][0]1   15     W1  1  0
row[1][1]1   15     X1  1  1
row[1][2]1   15     Y1  1  2
row[1][3]1   15     Z1  1  3