根据数据框中的条件填写新列

时间:2015-11-23 00:51:31

标签: r dataframe

我想在我的数据框中添加一个新列,以便LOC == 1时每行都有V等于V1的值;如果LOC==2V等于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中如何做到这一点的帮助。

2 个答案:

答案 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)