【问题标题】:Spiltting a character variable from a large dataset in R [duplicate]从R中的大型数据集中拆分字符变量[重复]
【发布时间】:2017-01-19 06:15:03
【问题描述】:

我有一个包含 165 个变量的大型数据集(1700 万受访者)。我有一个格式如下的日期变量:

9/16/2009 12:35:00 PM 
9/16/2009 12:54:43 PM 
9/16/2009 1:35:00 PM 
... 

我正在尝试提取年份。 我尝试过 splitstr,但似乎无法真正将新矩阵或数据框拆分为列。任何帮助表示赞赏!

这与其他提取日期问题不同,因为我需要从包含 1700 万个响应的整个数据框中进行提取。

【问题讨论】:

    标签: r


    【解决方案1】:

    如果我们需要通过“日期”和“时间”来split,可以方便地使用tidyr中的separate

    library(tidyr)
    df2 %>% 
       separate(DateTime, into = c("Date", "Time"), sep=" ")
    

    如果我们需要提取年份,请使用gsub

    df2$Year <- gsub(".*/|\\s+.*", "", df2$DateTime)
    

    或者使用as.POSIXct,因为它是“日期时间”

    df2$Year <- format(as.POSIXct(df2$DateTime, format = "%m/%d/%Y %H:%M:%S"), "%Y")
    

    或者正如 @Jaap 在 cmets 中建议的那样

    strptime(df2$DateTime, format = '%m/%d/%Y %I:%M:%S %p')$year + 1900
    

    as.POSIXctstrptime 的区别在于输出对象的class。对于as.POSIXct,它有POSIXct 类,而strptimePOSIXltPOSIXct。除了上述之外,使用任何一种都有方便。如果有人想提取不同的部分,如“月”、“年”等,strptime 更方便。使用as.POSIXct,我们可以包装format 以提取“月”、“年”。另外,请注意strptime 类与dplyr 函数的使用存在一些冲突


    或使用lubridate

    library(lubridate)
    df2$Year <- year(mdy_hms(df2$DateTime))
    

    注意:使用日期时间函数进行提取比使用字符串操作更好

    【讨论】:

    • 我会试试这个谢谢!
    • 我之前使用日期和时间函数所做的每一次尝试都没有返回任何内容,我认为是因为“字符串”末尾的 AM/PM 指定。原始数据集是来自数据收集文件的 csv。
    • 另一种选择:strptime('9/16/2009 12:35:00 PM', format = '%m/%d/%Y %I:%M:%S %p')$year + 1900
    • @Jaap 不错。对于像我这样的初学者来说,这将作为答案发布(如果它不存在的话)。
    • @Christoph 我展示了比需要与 1900 求和的方法更直接的方法。
    【解决方案2】:

    如果你想提取年份,你可以试试这个:

    df <- read.csv(text='Date
    9/16/2009 12:35:00 PM 
    9/16/2009 12:54:43 PM 
    9/16/2009 1:35:00 PM ')
    
    df$year <- as.numeric(substring(as.character(df$Date), 6,9))
    df$year
    #[1] 2009 2009 2009
    

    【讨论】:

    • 谢谢,我需要将日期保持在行中,就像原始数据集一样。它有 1700 万行,涉及 165 个变量(我列出的 3 个变量只是这些变量如何格式化的一个示例)。最终,我需要能够在其他变量上按年份运行交叉表。
    • 好的,你可以添加一个更新的列。
    猜你喜欢
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多