将数据框项目从R中的字符串转换为int时出现意外行为

问题描述 投票:0回答:2

[在尝试将映射应用于数据框时,我在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”,...,“ ...

r string dictionary data-conversion
2个回答
0
投票

示例中的问题是因为月份是因数的格式,并且按字母顺序排列级别,因此可以通过如下将其转换为字符来避免这种情况;


0
投票

一种简单的方法是使用内置的month.abb使用此单行代码将您的月份转换为正确的数字:

© www.soinside.com 2019 - 2024. All rights reserved.