数据集示例如下。当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列中上方单元格的状态复制到新列中。我创建了另一列,将列中的数据移位...
您不需要X_shifted
,您可以使用lag
为您提供先前的值