2014-10-09 66 views
3

我有一個data.frame,看起來像這樣:交易所值0值旁邊R中

Variable_1=c(123,0,12,0,334) 
Variable_2=c(100,212,13,112,300) 
df=data.frame(Variable_1,Variable_2) 

理想我想從Variable_2與相鄰值來代替Variable_10值來獲得以下:

Variable_1=c(123,212,12,112,334) 
Variable_2=c(100,212,13,112,300) 

我曾嘗試以下:

df$Variable_1[df$Variable_1 == 0] <- df$Variable_2 

,我現在遇到我的結果,問題是這樣的:

Variable_1=c(123,100,12,212,334) 
Variable_2=c(100,212,13,112,300) 

回答

3

你需要你的子集賦值表達式的RHS爲好。

df$Variable_1[df$Variable_1 == 0] <- df$Variable_2[df$Variable_1 == 0] 
+0

謝謝!這很好。早在nrussell所建議的時候,我正在和ifelse一起玩,但是我的實際df太大了,如果太長時間就不能運行。這個解決方案非常快。 – 2014-10-09 14:39:14

1

您還可以使用ifelse這個:

df <- data.frame(
    Variable_1 = c(
    123,0,12,0,334), 
    Variable_2 = c(
    100,212,12,112,300)) 
## 
df$Variable_1 <- ifelse(
    df$Variable_1==0, 
    df$Variable_2, 
    df$Variable_1) 
## 
> df 
    Variable_1 Variable_2 
1  123  100 
2  212  212 
3   12   12 
4  112  112 
5  334  300