为什么不能用数字替换包含字符串的 R 向量?
Why cant R vectors containing strings be replaced with numbers?
我在 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 值
知道为什么这不起作用,以及如何让它起作用吗?
我倾向于 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")
打字有点多,但它的优点是当我在六个月后回来时,我会很清楚我做了什么。
我在 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 值
知道为什么这不起作用,以及如何让它起作用吗?
我倾向于 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")
打字有点多,但它的优点是当我在六个月后回来时,我会很清楚我做了什么。