[在尝试将映射应用于数据框时,我在R中遇到奇怪的行为。
[我有一个名为data
的数据框,该数据框的列为“ month”,其月份的字符串名称为“ jan”,“ feb”,...,“ dec”。
我想将这些字符串转换为相应的月份号,例如,由于六月是一年中的第六个月,因此“ jun”变为6。
根据this post的建议,我编写了以下映射:
months = 1:12 names(months) = c("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")
这里是映射前
data
的前几项:
> data$month[1:20] [1] mar oct oct mar mar aug aug aug sep sep sep sep aug sep sep sep mar oct mar apr Levels: apr aug dec feb jan jul jun mar may nov oct sep
但是,当我将映射操作应用于
data
时,似乎出了点问题:
> months[data$month[1:20]] aug nov nov aug aug feb feb feb dec dec dec dec feb dec dec dec aug nov aug jan 8 11 11 8 8 2 2 2 12 12 12 12 2 12 12 12 8 11 8 1
我期望获得的东西是以3 10 10 3而不是8 11 11 8开头的,因为3月是第3个月,10月是第10个月。
我想念什么吗?
谢谢您的帮助! :D
当尝试将映射应用于数据框时,我在R中遇到奇怪的行为。我有一个名为data的数据框,该数据框具有一列“ month”,其中包含月份的字符串名称,例如“ jan”,“ feb”,...,“ ...
示例中的问题是因为月份是因数的格式,并且按字母顺序排列级别,因此可以通过如下将其转换为字符来避免这种情况;
一种简单的方法是使用内置的month.abb
使用此单行代码将您的月份转换为正确的数字: