如何使用dplyr mutate引用ifelse中的其他列

问题描述 投票:0回答:1

数据集示例如下。当temp.change == 0时,我希望R只是将X列中上方单元格的状态复制到新列中。我创建了另一列,将X列中的数据下移以引用它。换句话说,如果temp.change == 0,则使X = X_shifted。我意识到,如果连续存在多个0,则此方法也可能会出现问题。二进制X列是有关列temp.change的许多ifelse语句的结果。

temp.change     X   X_shifted
9.5             1     NA
1               1     1
-0.5            1     1
-1              0     1
-0.5            0     0
0               1     0
0               1     1
3               1     1          
0               0     1          
1               1     0

是否可以在ifelse语句中引用另一列?我宁愿尝试使用dplyr来找到一种方法,因为我有一个非常大的数据集,而且速度很快。我尝试了下面的代码,以及一些非dplyr方法,但均未成功。

  mutate(X_fixed = ifelse(temp.change_prev==0, X_shifted, X))

预期结果:

temp.change     X   X_shifted  X_fixed
9.5             1     NA         1
1               1     1          1
-0.5            1     1          1
-1              0     1          0
-0.5            0     0          0
0               1     0          0
0               1     1          0
3               1     1          1
0               0     1          1
1               1     0          1  

数据集示例如下。当temp.change == 0时,我希望R只是将X列中上方单元格的状态复制到新列中。我创建了另一列,将列中的数据移位...

r if-statement dplyr mutate
1个回答
0
投票

您不需要X_shifted,您可以使用lag为您提供先前的值

© www.soinside.com 2019 - 2024. All rights reserved.