如何解决使用R更改和替换NA时分配一个自定义编号
id date from to type
<chr> <date> <date> <date> <chr>
1 2011-02-21 2011-01-01 2011-12-31 NA
2 2013-03-11 2013-01-01 2013-12-31 NA
3 2015-12-31 2015-01-01 2015-12-31 last
4 NA NA NA NA
5 NA NA NA NA
我想计算出我们可以将日期向前或向后移动的范围。
我写了下面的代码,它在Non-NA
情况下工作正常,如下所示
data %>%
mutate(shift_back_max = (date - from) / ddays(1),shift_forward_max = (to - date) / ddays(1)) %>%
data[c("shift_back_max","shift_forward_max")][is.na(data[c("shift_back_max","shift_forward_max")])] <- 30 # error is here with the way I am replacing `NA` with 30
我猜我在%>%操作任务期间要替换NA
时遇到的问题。
对于NA scenarios
,我想为自定义范围30-30 。
您可以将NA
替换为30(仅适用于这两列),也可以使用其他任何方法为NA键入30
我希望我的输出如下所示
解决方法
您可以将NA
中的mutate
替换为这两列中的30:
library(dplyr)
library(lubridate)
df %>%
mutate(shift_back_max = (date - from) / ddays(1),shift_forward_max = (to - date) / ddays(1),across(starts_with('shift'),tidyr::replace_na,30))
# id date from to type shift_back_max shift_forward_max
#1 1 2011-02-21 2011-01-01 2011-12-31 <NA> 51 313
#2 2 2013-03-11 2013-01-01 2013-12-31 <NA> 69 295
#3 3 2015-12-31 2015-01-01 2015-12-31 last 364 0
#4 4 <NA> <NA> <NA> <NA> 30 30
#5 5 <NA> <NA> <NA> <NA> 30 30
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。