将0值替换为R中该值旁边的值

将0值替换为R中该值旁边的值,r,R,我有一个data.frame,看起来像这样: Variable_1=c(123,0,12,0,334) Variable_2=c(100,212,13,112,300) df=data.frame(Variable_1,Variable_2) Variable_1=c(123,100,12,212,334) Variable_2=c(100,212,13,112,300) 理想情况下,我希望将变量_1中的0值替换为变量_2中的相邻值,以获得以下结果: Variable_1=c(123,212

我有一个
data.frame
,看起来像这样:

Variable_1=c(123,0,12,0,334)
Variable_2=c(100,212,13,112,300)
df=data.frame(Variable_1,Variable_2)
Variable_1=c(123,100,12,212,334)
Variable_2=c(100,212,13,112,300)
理想情况下,我希望将
变量_1
中的
0
值替换为
变量_2
中的相邻值,以获得以下结果:

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,212,12,112,334)
Variable_2=c(100,212,13,112,300)
df$Variable_1[df$Variable_1 == 0] <- df$Variable_2

您还需要将赋值表达式的RHS子集

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

df$Variable\u 1[df$Variable\u 1==0]您也可以使用
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

df谢谢!这很有效。正如nrussell建议的那样,我之前在玩ifelse,但我的实际df太大,ifelse太长,无法运行。这个解决方案非常快。