将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太长,无法运行。这个解决方案非常快。