gpt4 book ai didi

r - 在R中将字符串转换为日期

转载 作者:行者123 更新时间:2023-12-02 06:55:13 25 4
gpt4 key购买 nike

我要转换的数据应该是日期,但它的格式为 mmddyyyy,没有用破折号或斜杠分隔。为了在 R 中使用日期,我希望将其格式化为 mm-dd-yyyy 或 mm/dd/yyyy。

我想我可能需要使用 grep() ,但我不确定如何使用它来重新格式化 mmddyyyy 格式的所有日期。

最佳答案

更新 : 使用 @Richard Scriven 改进的colClasses更简单as.Date()建议

以下是对我有用的两种类似方法,来自包含 mmddyyyy 的 csv。格式化日期,使其被 R 识别为日期对象。

首先从一个简单的文件 tv.csv 开始:

Series,FirstAir
Quantico,09272015
Muppets,09222015

方法一:全部为字符串

一旦在 R 内,
> t = read.csv('tv.csv', colClasses = 'character')
  • 进口 tv.csv作为名为 t 的数据框
  • colClasses = 'character')选项导致所有数据都被视为 character数据类型(而不是 Factorint 类型)

  • 检查其初始结构:
    > str(t)
    'data.frame': 2 obs. of 2 variables:
    $ Series : chr "Quantico" "Muppets"
    $ FirstAir: chr "09272015" "09222015"
  • R 已将所有内容作为字符串导入,此处表示为类型 chr
  • chr然后很容易将字符串或字符串转换为日期:
    > t$FirstAir = as.Date(t$FirstAir, "%m%d%Y")
  • as.Date()执行字符串到日期的转换
  • %m%d%Y指定如何解释 t$FirstAir 中的输入.这些格式代码,至少在 Linux 上,可以通过运行 $ man date 找到。这带来了date上的手册程序,其中有格式代码列表。例如它说%m month (01..12)

  • 方法 2:导入然后仅修复日期

    如果由于某种原因您不希望对所有字符进行全面导入转换,例如具有许多变量的文件,并且希望保留 R 的自动类型识别功能,而只是“修复”一个日期变量,请遵循此方法。

    一旦在 R 内,
    > t = read.csv('tv.csv')
  • 进口 tv.csv作为名为 t 的数据框

  • 检查其初始结构:
    > str(t)
    'data.frame': 2 obs. of 2 variables:
    $ Series : Factor w/ 2 levels "Muppets","Quantico": 2 1
    $ FirstAir: int 9272015 9222015
    >
  • R 尽力猜测每个变量的变量类型
  • 如您所见,一个直接的问题是,对于 FirstAir变量 R 已导入 09272015int意思是整数,并且去掉了前导零填充,09 中的 0 稍后对于日期转换很重要,但 R 没有导入它。所以我们需要解决这个问题。

  • 这可以在一个命令中完成,但为了清楚起见,我将其分为两个步骤。第一的,
    > t$FirstAir = sprintf("%08d", t$FirstAir)
  • sprintf是一个格式化函数
  • 0表示用零填充
  • 8表示确保 8 个字符,因为 mmddyyyy 总共 8 个字符
  • d当输入是数字时使用,目前是数字,记忆 str()输出声称 t$FirstAirint含义整数
  • t$FirstAir是我们设置并用作输入的变量

  • 检查结果:
    > str(t$FirstAir)
    chr [1:2] "09272015" "09222015"
  • 它从 int 成功转换到 chr输入,例如 9272015变成了"09272015"

  • 现在它是一个字符串或 chr然后我们可以转换类型,与方法1相同。
    > t$FirstAir = as.Date(strptime(t$FirstAir, "%m%d%Y"))

    结果

    我们做最后的检查:
    > str(t$FirstAir)
    Date[1:2], format: "2015-09-27" "2015-09-22"

    在这两种情况下,文本文件中的原始值现在已成功转换为 R 日期对象。

    关于r - 在R中将字符串转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32854538/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com