繁体   English   中英

R中的月度转换因子

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM