Я пытаюсь понять, почему моя функция lubridate
mdy()
возвращает ошибку в lapply()
для преобразования дат в dplyr
конвейере. Я использовал mdy()
для других данных аналогичным способом, но до сих пор не видел эту проблему. Я относительно новичок в R, но до сих пор не мог устранить другие проблемы. Я не очень знаком с тем, как использовать lapply()
.
Мои данные - это большие .csv данные о качестве воды, которые я подкладываю, чтобы просто показать данные.
library(dplyr)
library(lubridate)
require(lubridate)
wq.all<-as.data.frame(read.csv('C:/WQdata.csv',header=TRUE,stringsAsFactors = FALSE))
test.wq<-wq.all[1:5,12:13]
class(test.wq)
[1] "data.frame"
mode(test.wq)
[1] "list"
str(test.wq)
'data.frame': 5 obs. of 2 variables:
$ YearMonth : chr "2019-07" "2019-06" "2019-05" "2019-04" ...
$ SampleTime: chr "07/09/2019 14:44" "06/10/2019 14:17" "05/22/2019 14:31" "04/08/2019 14:15" ...
В str(test.wq)
, SampleTime
- это данные, о которых я пытаюсь привести от chr
до date
или, по крайней мере, num
.
Во-первых, я неМне нужны значения времени, поэтому я использовал dplyr
mutate()
для создания SampleDate
только с 10-символьными датами, а затем пытался принудительно использовать mdy()
:
wq.date<-test.wq%>%
mutate(SampleDate=str_sub(test.wq[[2]],start=0,end=10))%>%
mdy(SampleDate)
Но это возвращаетошибка:
Error in lapply(list(...), .num_to_date) : object 'SampleDate' not found
Если я использую только mutate()
, все, кажется, работает нормально, и дает мне новый столбец SampleDate
, который я искал:
wq.date<-test.wq%>%
mutate(SampleDate=str_sub(test.wq[[2]],start=0,end=10))
head(wq.date)
YearMonth SampleTime SampleDate
1 2019-07 07/09/2019 14:44 07/09/2019
2 2019-06 06/10/2019 14:17 06/10/2019
3 2019-05 05/22/2019 14:31 05/22/2019
4 2019-04 04/08/2019 14:15 04/08/2019
5 2019-03 03/13/2019 14:19 03/13/2019
str(wq.date)
'data.frame': 5 obs. of 3 variables:
$ YearMonth : chr "2019-07" "2019-06" "2019-05" "2019-04" ...
$ SampleTime: chr "07/09/2019 14:44" "06/10/2019 14:17" "05/22/2019 14:31" "04/08/2019 14:15" ...
$ SampleDate: chr "07/09/2019" "06/10/2019" "05/22/2019" "04/08/2019" ...
Таккажется, что это только приводит к ошибке, когда я пытаюсь принудительно использовать mdy()
, хотя SampleDate
явно существует, и я считаю, что я ссылался на него правильно. Я исследовал другие посты здесь и здесь , но ни один из них, похоже, не дошел до этой проблемы.
Мысли? Большое спасибо!