2014-10-09 63 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