我有一个如下列表:
yel <- list(c(1,3,5,7,9),
c(1,2,6,9),
c(2,4,5,6,7,8,9))
我想将列表转换为如下所示的数据框:
1 2 3
1 1 1 0
2 0 1 1
3 1 0 0
4 0 0 1
5 1 0 1
6 0 1 1
7 1 0 1
8 0 0 1
9 1 1 1
要了解我是如何到达该列表的:我有一个包含2列的数据帧,即“id”和“text”。 “text”列是一个字符列表。我在字符列表中找到了唯一的单词,并创建了一个数据框“yel”,其中第一个列表表示“id”,其中“text1”,第二个列表示“id”,其中包含“text2”等等。 (例如,我的数据集中的“id”是 7170325 )。非常感谢你提前!
答案 0 :(得分:5)
tabulate
在这里可能很方便:
setNames(data.frame(lapply(yel, tabulate)), seq_along(yel) )
# 1 2 3
#1 1 1 0
#2 0 1 1
#3 1 0 0
#4 0 0 1
#5 1 0 1
#6 0 1 1
#7 1 0 1
#8 0 0 1
#9 1 1 1
答案 1 :(得分:4)
我们可以使用mtabulate
library(qdapTools)
t(mtabulate(yel))
# [,1] [,2] [,3]
#1 1 1 0
#2 0 1 1
#3 1 0 0
#4 0 0 1
#5 1 0 1
#6 0 1 1
#7 1 0 1
#8 0 0 1
#9 1 1 1