1

我将 select_multiple 问题的结果存储在列表中。这来自使用OpenDataKit收集的数据集

example <- list("a", c("b", "c"), c("d", "e", "f"), c(""))

在下面的记录示例中#4,没有答案(NA所有选项的含义)。

我需要从此列表中创建一个数据框,其中选择多个选项中的每个选项都将成为一个新变量。列表中的每个元素实际上的长度不同。

结果应如下所示:

variable | a   b    c    d     e    f
row1     | 1   0    0    0     0    0
row2     | 0   1    1    0     0    0 
row3     | 0   0    0    1     1    1
row4     | <NA> <NA><NA> <NA><NA> <NA>

我找到了选项,stri_list2matrix但没有提供预期的结果。

我也试过

df <-data.frame( lNames <- rep(names(example), lapply(example, length)),
                  lVal <- unlist(example))

得到了同样的结果

arguments imply differing number of rows

请帮忙!

谢谢

4

1 回答 1

1

您可以使用setNames,stackdcast为此:

example <- list("a", c("b", "c"), c("d", "e", "f"), c(""))
example <- setNames(example, seq_along(example))

ex2 <- stack(example)
ex2[ex2$values=='','values'] <- NA

library(reshape2)
dcast(ex2, ind ~ values, fun.aggregate = length)

这将导致:

  ind a b c d e f NA
1   1 1 0 0 0 0 0  0
2   2 0 1 1 0 0 0  0
3   3 0 0 0 1 1 1  0
4   4 0 0 0 0 0 0  1
于 2017-05-28T21:44:53.160 回答