2015-11-23 97 views
1

我想在我的數據框中添加一個新列,以便對於每一行如果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

如果LOC只包含1或2,那麼這將工作

df$V <- ifelse(df$LOC == 1, df$V1, df$V2) 
+0

對於2組來說,這是一個很好的解決方案,但如果您的列數超過2列,它將很快變得複雜。 – thelatemail

+0

@thelatemail,同意。我喜歡你的方法,用矩陣子設置總是很有趣! –

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 
+0

謝謝。但是有沒有更簡單的方法可以將它添加到我擁有的數據框中? – daragh

+0

@daragh - 'dat $ V < - dat [-1] [idx]'你就完成了。我不確定這有什麼困難。 – thelatemail