不检测日期
Doesn't detect dates
我正在使用函数 isoweek
和 if_else
进行一些操作,但有些日期不执行获取 NA
.
的操作
db = read_dta("C:/Users/crist/Downloads/db.dta")
db$date1 = substr(db$date1,1,10)
db$date1 = as.Date(db$date1)
db$date2 = substr(db$date2,1,10)
db$date2 = as.Date(db$date2)
t = db %>%
drop_na(value) %>%
mutate(Weekday = weekdays(date2),
date2 = replace(date2, Weekday %in% c("Saturday", "Sunday"), NA),
num_week = isoweek(date2),
dummy_sas = if_else(date2 >= ymd("2020-05-18"),1,0)) %>%
fill(date2) %>%
select(-Weekday) %>%
mutate(date2 = if_else(date2 < as.Date("2020-05-18") & SAS == 1, date1, date2))
I need for example all the week numbers but i get NA's
> summary(isoweek(t$date2))
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 22.00 31.00 28.15 39.00 47.00
> summary(t$num_week)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
1.00 21.00 31.00 28.12 39.00 47.00 109
数据here
我还没有下载数据,但我认为这里的操作顺序似乎是个问题。试试这个:
library(dplyr)
library(lubridate)
db %>%
drop_na(value) %>%
mutate(Weekday = weekdays(date2),
num_week = isoweek(date2),
date2 = replace(date2, Weekday %in% c("Saturday", "Sunday"), NA),
dummy_sas = as.integer(date2 >= ymd("2020-05-18"))) %>%
fill(date2) %>%
select(-Weekday) %>%
mutate(date2 = if_else(date2 < as.Date("2020-05-18") & SAS == 1, date1, date2))
在您的代码中,您将周末替换为 NA
:
date2 = replace(date2, Weekday %in% c("Saturday", "Sunday"), NA)
然后 isoweek
date2
。
num_week = isoweek(date2)
所以周末 NA
num_week
。
你在最后一行再次替换 date2
mutate(date2 = if_else(date2 < as.Date("2020-05-18") & SAS == 1, date1, date2))
所以你在 t$date2
中没有得到任何 NA
。
我正在使用函数 isoweek
和 if_else
进行一些操作,但有些日期不执行获取 NA
.
db = read_dta("C:/Users/crist/Downloads/db.dta")
db$date1 = substr(db$date1,1,10)
db$date1 = as.Date(db$date1)
db$date2 = substr(db$date2,1,10)
db$date2 = as.Date(db$date2)
t = db %>%
drop_na(value) %>%
mutate(Weekday = weekdays(date2),
date2 = replace(date2, Weekday %in% c("Saturday", "Sunday"), NA),
num_week = isoweek(date2),
dummy_sas = if_else(date2 >= ymd("2020-05-18"),1,0)) %>%
fill(date2) %>%
select(-Weekday) %>%
mutate(date2 = if_else(date2 < as.Date("2020-05-18") & SAS == 1, date1, date2))
I need for example all the week numbers but i get NA's
> summary(isoweek(t$date2))
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 22.00 31.00 28.15 39.00 47.00
> summary(t$num_week)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
1.00 21.00 31.00 28.12 39.00 47.00 109
数据here
我还没有下载数据,但我认为这里的操作顺序似乎是个问题。试试这个:
library(dplyr)
library(lubridate)
db %>%
drop_na(value) %>%
mutate(Weekday = weekdays(date2),
num_week = isoweek(date2),
date2 = replace(date2, Weekday %in% c("Saturday", "Sunday"), NA),
dummy_sas = as.integer(date2 >= ymd("2020-05-18"))) %>%
fill(date2) %>%
select(-Weekday) %>%
mutate(date2 = if_else(date2 < as.Date("2020-05-18") & SAS == 1, date1, date2))
在您的代码中,您将周末替换为 NA
:
date2 = replace(date2, Weekday %in% c("Saturday", "Sunday"), NA)
然后 isoweek
date2
。
num_week = isoweek(date2)
所以周末 NA
num_week
。
你在最后一行再次替换 date2
mutate(date2 = if_else(date2 < as.Date("2020-05-18") & SAS == 1, date1, date2))
所以你在 t$date2
中没有得到任何 NA
。