我想根据单个现有列的值创建新列。 它是事件数据(来自网站),因此值的数量不同。就像这样:
row Events
1 237,2,236,102,106,111,114,115,116,117,118,119,125
2 237,111,116
3 102,106,111,114,115
4 237,2,236,102,106,111,114,115,116,117,118,119,125, 126
结果应该是基于不同值的虚拟数据。
row 237 2 236 102 106 111 114 115 116 117 118 119 125 126
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
2 1 0 0 0 0 1 0 0 1 0 0 0 0 0
3 0 0 0 1 1 1 1 1 0 0 0 0 0 0
4 0 0 0 1 1 1 1 1 0 0 0 0 0 1
我尝试用tidyr单独的函数解决这个问题,结合函数" createDummyFeatures" (MLR包)。但是,我必须手动命名列(理想情况下,它应该采用值的名称,就像在示例中一样)。
答案 0 :(得分:0)
我们可以在按table
拆分并使用,
data.frame
后使用stack
方法
table(stack(setNames(strsplit(df1$Event, ","), df1$row))[2:1])
df1 <- structure(list(row = 1:4,
Events = c("237,2,236,102,106,111,114,115,116,117,118,119,125",
"237,111,116", "102,106,111,114,115",
"237,2,236,102,106,111,114,115,116,117,118,119,125, 126"
)), .Names = c("row", "Events"), class = "data.frame", row.names = c(NA,
-4L))