我们可以使用match
in base R
- 得到unique
元素来自于unlist
编辑数据作为vector
,循环列,获取匹配元素的索引,以及replace
具有匹配元素的索引并在处理长度后转换为 data.frame
v1 <- unique(unlist(df1))
lst1 <- lapply(df1, \(x)
{i1 <- match(x, v1)
replace(rep(NA, max(i1)), i1, v1[i1])
})
list2DF(lapply(lst1, `length<-`, max(lengths(lst1))))
1.0 2.0 3.0
1 loud <NA> <NA>
2 pain pain <NA>
3 dull <NA> <NA>
4 <NA> complaint <NA>
5 <NA> stress stress
6 <NA> <NA> problems
7 <NA> <NA> confused
data
df1 <- structure(list(`1.0` = c("loud", "pain", "dull"), `2.0` = c("complaint",
"stress", "pain"), `3.0` = c("problems", "confused", "stress"
)), class = "data.frame", row.names = c(NA, -3L))