【发布时间】:2015-07-02 21:18:40
【问题描述】:
我想从之前的 3 列('group'、'animal' 和 'full')中创建最后一列('desired_result')。以下是可重现示例的代码。
library(data.table)
data = data.table(group = c(1,1,1,2,2,2), animal = c('cat', 'dog', 'pig', 'giraffe', 'lion', 'tiger'), desired_result = c('dog, pig', 'cat, pig', 'cat, dog', 'lion, tiger', 'giraffe, tiger', 'giraffe, lion'))
data[, full := list(list(animal)), by = 'group']
data = data[, .(group, animal, full, desired_result)]
data
group animal full desired_result
1: 1 cat cat,dog,pig dog, pig
2: 1 dog cat,dog,pig cat, pig
3: 1 pig cat,dog,pig cat, dog
4: 2 giraffe giraffe,lion,tiger lion, tiger
5: 2 lion giraffe,lion,tiger giraffe, tiger
6: 2 tiger giraffe,lion,tiger giraffe, lion
基本上,我想修改“完整”,使其不包含相应的“动物”。我尝试了使用这些列的列表和字符版本的各种 lapply 命令,但未能解决这个问题。
【问题讨论】:
标签: r data.table