我有一个while ((i=spawn.read()) != -1) {
if (Character.isWhitespace((char)i)) {
continue;
}
if (h == 30) {
h = 0;
k++;
}
spawnWorld[k][h] = (char)i;
h++;
}
,其中有几列包含日期,其中一些是将来的日期(例如,2019-08-26)。我需要将未来的日期替换为tibble
,并希望使用NA
替换。
到目前为止,我有以下内容无法正常工作:
dplyr
答案 0 :(得分:3)
来自help(replace)
参数
x:向量
因此,请改用pull
library(dplyr)
d %>%
pull("Date1") %>%
replace(. > today(), NA)
#[1] "2019-08-05" NA NA NA "2019-07-29"
#[6] "2019-08-12" "2019-08-19" NA NA
如果您需要tibble
并尝试替换这些值,请使用mutate
d %>%
mutate(Date2 = replace(Date1, Date1 > Sys.Date(), NA))
# A tibble: 9 x 3
# ID Date1 Date2
# <int> <date> <date>
#1 1 2019-08-05 2019-08-05
#2 2 2019-08-26 NA
#3 3 2019-08-26 NA
#4 4 2019-08-26 NA
#5 5 2019-07-29 2019-07-29
#6 6 2019-08-12 2019-08-12
#7 7 2019-08-19 2019-08-19
#8 8 2019-08-26 NA
#9 9 2019-08-26 NA
如@ d.b所指出。在注释中,以及在How to prevent ifelse() from turning Date objects into numeric objects if_else
和ifelse
中,日期也不是很好。
# don't run
# d %>% mutate(Date2 = ifelse(Date1 < today(), Date1, NA))
更新
如果您有多列,则选项为mutate_if
d %>%
mutate_if(., is.Date, .funs = ~replace(., . > today(), NA))