我有一个长格式的数据集(每个人有3行)。
我正在尝试基于其他两列的组合创建一个新变量(newvar
)。在下面的示例数据中,我希望newvar
等于a
,b
或c
的值,具体取决于列order
< / p>
如果order=1
,则newvar
应该取a
中的值。
如果为order=2
,则newvar
应采用b
中的值。
如果为order=3
,则newvar
应采用c
中的值。
id <- c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4)
a <- c(1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1)
b <- c(NA, NA, NA, 0, 0, 0, 1, 1, 1, 2, 2, 2)
c <- c(NA, NA, NA, 1, 1, 1, 0, 0, 0, NA, NA, NA)
order <- c(2, 1, 3, 1, 2, 3, 1, 2, 3, 3, 1, 2)
df <- data.frame(id, a, b, c, order)
df$newvar[df$order == 1] <- df$a
df$newvar[df$order == 2] <- df$b
df$newvar[df$order == 3] <- df$c
仅分配值会导致多个错误。 我还收到一条错误消息“要替换的项目数不是替换长度的倍数”
this post中提供的解决方案不起作用。