在R中将0替换为其相邻的值。

3

我有一个看起来像这样的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_2中相邻的值来替换Variable_1中的0值,结果如下:
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)
2个回答

3
你需要将赋值表达式右侧进行子集处理。
df$Variable_1[df$Variable_1 == 0] <- df$Variable_2[df$Variable_1 == 0]

谢谢!这个方法很好用。之前我试过使用ifelse,就像nrussell建议的那样,但是我的数据框太大了,ifelse运行起来太慢了。这个解决方案非常快速。 - John Lapek

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接