我在R中遇到了一些关于替换编码的问题。
这是原始的data.table。有两个数据表:
dt1 <- data.table(V1 = c(1,"A"))
dt2 <- data.table("1" = c(4,5,6), "A" = c("c","d","e"))
现在我想通过匹配关系将dt1中的值替换为dt2中的值。
期望的输出应该是:
dt3 <- data.table(V1 = c("4,5,6", "c,d,e"))
也就是说,我想将dt1中的值替换为dt2中对应列中的所有值。这是一个简单的例子,我想把它应用到整个数据中。
我在处理这件事上遇到了很大的麻烦,所以请帮助我。
这是一种从输入到期望输出的方法。
dt1[, V1 := sapply(dt2, paste, collapse = ',')[V1]]
# Test
all.equal(dt1, dt3)
[1] TRUE
p。您确定在字符串中存储以逗号分隔的值是最好的方法吗?
我们可以这样做
dt1[, V1 := unlist(lapply(V1, function(x) toString(dt2[[x]])))]
dt1
V1
1: 4, 5, 6
2: c, d, e