我正在尝试编写一个函数来将3个字母的月份缩写转换为R中的数值.
这就是我所拥有的,我想知道是否有更好的方法来做到这一点:
numMonth <- function(x) {
    months <- list(jan=1,feb=2,mar=3,apr=4,may=5,jun=6,jul=7,aug=8,sep=9,oct=10,nov=11,dec=12)
    x <- tolower(x)
    sapply(x,function(x) months[[x]])
}
numMonth(c('JAN','DEC'))
42-*_*42- 33
由于month.abb是系统常量,为什么不使用:
 match("jan", tolower(month.abb))
 # [1] 1
 mo2Num <- function(x) match(tolower(x), tolower(month.abb))
 mo2Num(c("jan", "JAN", "Feb", "junk")  )
 #[1]  1  1  2 NA
如果你想看到相对较少数量的"系统常量"的其余部分,请转到
`?Constants`
示例文本暗示这些应该是与您的语言环境相关联的语言(尽管我无法用权限说明哪些语言环境可能会出现.另一种方法可能是在转换为POSIXlt对象后提取月数量)这种方法需要记住月号os 0,所以你需要在这个例子中加1.
使用矢量化,即:
numMonth<-function(x) 
c(jan=1,feb=2,mar=3,apr=4,may=5,jun=6,jul=7,aug=8,sep=9,oct=10,nov=11,dec=12)[tolower(x)]
| 归档时间: | 
 | 
| 查看次数: | 12559 次 | 
| 最近记录: |