我希望x1列遵循一种模式。在x1列中,如果该列中的前一行是2018,则我希望将下一行设为2017。此外,如果前一行是2016,则我希望下一行是2018。
g <- data.frame("x1" = c(2018,"NA",2016,2016,"NA",2018,2017,2016,"NA"),
"x2" = c(2,2,2,1,4,3,4,1,1),
"x3" = c(22,22,23,24,25,26,27,28,29))
我正在使用一个大型数据集,但这是我的数据样本。
预期成果:
g <- data.frame("x1" = c(2018,2017,2016,2016,2018,2018,2017,2016,2018),
"x2" = c(2,2,2,1,4,3,4,1,1),
"x3" = c(22,22,23,24,25,26,27,28,29))
2条答案
按热度按时间ubof19bj1#
假设你的“NA”值是
NA
,一种方法是在dplyr::mutate
中使用dplyr::case_when
:输出:
如果它们真的是字符变量
"NA"
,就像示例数据中的那样,您只需将上面的代码更改为:jrcvhitl2#
我们可以这样做:这里我们使用
case_when
。在我们使用type.conver(as.is = TRUE)
将x1转换为数值之前,然后应用给定的条件: