我在R数据帧中有一个向量,其中字面上包含一年中月份的缩写(JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC)我想用他们传统的等同物替换它们[1:12]
提出了以下想法,所有这些想法都给出了一个载有不可用(NA)值的向量。
replace(df$month, df$month == 'JAN', '01')
df$month <- if(df$month == "JAN") '01'
df$month <- match(df$month,month.abb)
前两个只使得NA值为JAN,第三个使得所有月份的NA值
为什么这不起作用以及如何让它发挥作用的任何想法?
答案 0 :(得分:1)
我倾向于使用merge
执行此操作。
MonthRef <- data.frame(month_number = 1:12,
month_abb = toupper(month.abb))
#* Make a data frame of random months
Months <- data.frame(month = sample(MonthRef$month_abb, 20, replace=TRUE))
merge(Months, MonthRef, by.x="month", by.y="month_abb")
这有点打字,但它的优势在于,当我六个月回来时,我会很清楚我做了什么。