簡體   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