为什么不能将包含字符串的R矢量替换为数字?

时间:2015-03-16 00:02:16

标签: r replace

我在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值

为什么这不起作用以及如何让它发挥作用的任何想法?

1 个答案:

答案 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")

这有点打字,但它的优势在于,当我六个月回来时,我会很清楚我做了什么。