[英]Factor to Month-Year Conversion in R
有一个因素列April-2017
February-2017
等,希望将其转换为月份和年份来排序列按年份和月份,使其从一月开始。 尝试以下:
Combi$Month <- as.yearmon(levels(Combined$Month))[Combined$Month] -> Yields 'NA'
Combined$Month <- as.Date(Combined$Month,'%B-%Y') -> Yields 'NA'
"yearmon"
类可以表示年份-月份,并按预期排序:
library(zoo)
x <- factor(c('April-2017', 'February-2017')) # test data
ym <- as.yearmon(x, "%B-%Y")
sort(ym)
## [1] "Feb 2017" "Apr 2017"
因此,您实际上并不需要将其转换为"Date"
类,也不需要分别as.integer(ym)
年和月,但是如果由于某种原因未在问题中说明,您仍然需要单独的值,则as.integer(ym)
和cycle(ym)
给出年份为4位数字,月份为1至12之间的数字as.Date(ym)
给出"Date"
类值。
R基本方式:
# Some sample data
df <- data.frame(period=sample(c("April-2017","February-2017"),10, replace = TRUE))
nicep <- function(x) {
months <- c('January','February','March','April','May','June','July','August','September','October','November','December')
l <- strsplit(x, '-')
return(sprintf("%s-%02d",l[[1]][2], which(months == l[[1]][1])))
}
# change levels for a nice name
levels(df$period) <- unlist(lapply(as.character(levels(df$period)), FUN=nicep))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.