我想在我的数据框中添加一个新列,以便LOC == 1
时每行都有V
等于V1
的值;如果LOC==2
则V
等于V2
的值。这是一个例子:
df <-
LOC V1 V2
1 0.5 0.7
1 0.5 0.7
2 0.5 0.7
1 0.6 0.8
结果应该是:
df <-
LOC V1 V2 V
1 0.5 0.7 0.5
1 0.5 0.7 0.5
2 0.5 0.7 0.7
1 0.6 0.8 0.6
我需要在R中如何做到这一点的帮助。
答案 0 :(得分:3)
使用矩阵索引:
idx <- cbind(seq_len(nrow(dat)), dat$LOC)
# row col
# [,1] [,2]
#[1,] 1 1
#[2,] 2 1
#[3,] 3 2
#[4,] 4 1
dat[-1][idx]
#[1] 0.5 0.5 0.7 0.6
答案 1 :(得分:2)
如果LOC
只包含1或2,那么这将有效
df$V <- ifelse(df$LOC == 1, df$V1, df$V2)