[英]Function to calculate the day number of the week from the date/time string in R
我有一個函數如下:##函數從日期/時間字符串計算一周的日期編號
getDayOfWeek <- function(vector) {
split1 <- strsplit(paste(vector), " ")
dateIs <- as.POSIXlt(split1[[1]][1])
print (dateIs$wday)
}
但是此功能是基於2016-06-12 11:23:25.680Z
格式編寫的,但我的數據是%m%d%y %h%m
。 如何更改函數中使用的原始日期時間的格式。 我想將此函數應用於我的數據框,以便根據附加列中的時間獲取星期名稱。
我在用
taxidata$weekday <-sapply(taxidata$tpep_pickup_datetime, FUN=getDayOfWeek)
我收到以下錯誤:
as.POSIXlt.character(split1 [[1]] [1])出錯:字符串不是標准的明確格式
我也用過:
taxidata$dayofweek <- weekdays(as.Date.POSIXct(taxidata$tpep_pickup_datetime, format="%m/%d/%y %H:%M"))
head(taxidata, n =3)
但是這個功能只給我四周的所有數據點。
鑒於例如
x <- "2016-06-12 11:23:25.680Z"
as.POSIXct(x, format = "%Y-%m-%d %H:%M:%S")
# [1] "2016-06-12 11:23:25 CEST"
要么
x <- "061216 1123"
as.POSIXct(x, format = "%m%d%y %H%M")
# [1] "2016-06-12 11:23:00 CEST"
?strptime
告訴你
%u:工作日為十進制數(1-7,星期一為1)
所以你可以做到
format(as.POSIXct(x, format = "%m%d%y %H%M"), "%u")
# [1] "7"
字符串不是標准的明確格式
意味着例如2016-06-12
可以解釋為6月12日或12月6日。 您應該指定格式。
你可以使用lubridate: t <- lubridate::ymd_hms("2016-06-12 11:23:25.680Z")
lubridate::wday(t, label = F, abbr = F)
(= 1)或
lubridate::wday(t, label = T, abbr = T)
(= Sun)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.