说我有这样一个数据表:
DT <- data.table(id = c(1, 1, 1, 2, 3, 4, 4, 4, 5, 5, 5, 5, 5, 6),
group = c(1, 4, 2, 4, 3, 1, 1, 1, 2, 2, 3, 4, 4, 3),
group_1 = rep(0, 14),
group_2 = rep(0, 14),
group_3 = rep(0, 14),
group_4 = rep(0, 14))
我想在组变量匹配的每个group_x变量中添加1。我希望group_1等于1的任何行中的group_1中都为1。我可以很容易地用四行代码来做到这一点:
DT[group == 1, group_1 := 1]
DT[group == 2, group_2 := 1]
DT[group == 3, group_3 := 1]
DT[group == 4, group_4 := 1]
但是在实践中,我有一个非常大的数据集和许多组,我想要一种更整洁(希望更有效)的方式来仅用一行。我已经尝试过以下方法:
DT[,eval(paste0("group_", group)) := 1]
但是我只是收到一条错误消息,提示未找到对象“ group”。这是一个非常耗费资源/时间的过程,因此非常希望能帮助您加快速度。