我的数据由关于小部件集合的成对观察组成,但成对的观察可以是任意顺序的.
library(data.table)
library(dplyr)
dt <- data.table(
V1 = c("B", "A", "D", "A", "G", "B", "C", "C", "E", "C"),
V2 = c("A", "B", "C", "B", "C", "E", "D", "B", "B", "G")
)
我希望能够列出我Collection 中的不同小部件(A:B和B:A是一回事). Dplyr通过以下方式成功实现了这一点:
ordered <- dt %>%
rowwise() %>%
mutate(widget= paste(sort(c(V1, V2)), collapse = ":")) %>%
group_by(widget) %>%
distinct(widget)
由于我的数据集很大,观测数据非常长,我希望将代码转换为data.table,但找不到适当的行式操作. 我怀疑这可能是一件很合适的事情,大概是这样的:
orderedDT <- dt[,
j= widget:=lapply(.SD, function(x){paste(sort(x),collapse = ":")}),
by = .(V1, V2),
.SDcols = c("V1", "V2")]
但这并不能产生正确的结果.感谢您阅读这篇文章和您的建议.