【问题标题】:Running separate in large dataset with R使用 R 在大型数据集中单独运行
【发布时间】:2021-02-20 08:33:57
【问题描述】:

我正在尝试在大型数据集中分离日期和时间列,以便仅隔离时间部分。

该列的格式如下:

$ Start_Time <chr> "12/31/2015 05:35:00 PM", "12/31/2015 05:37:00 PM", "12/31/2015 05:37:00 PM", "12/31/2015 05:38:00...

我运行这行代码:

separate(Start_Time, into = c("Date", "Time", "Eh"))

我得到以下输出。

> Test <- Divvy_Trips %>%
+   separate(Start_Time, into = c("Date", "Time", "Eh"))
Error: memory exhausted (limit reached?)

我的会话信息也在下面:

> sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)

Matrix products: default

关于我可以做些什么来实现这一点的任何想法,或者考虑到我的数据集大约有 2100 万个观察值,我在使用 R 时不走运。

谢谢!

【问题讨论】:

    标签: r tidyr large-data


    【解决方案1】:

    您可以尝试以下data.table 选项:

    library(data.table)
    library(splitstackshape)
    
    setDT(Divvy_Trips)
    
    #Using tstrsplit
    Divvy_Trips[, c("Date", "Time", "Eh") := tstrsplit(type, " ")]
    
    #Using cSplit
    result <- cSplit(Divvy_Trips, "Start_Time", " ")
    

    【讨论】:

      【解决方案2】:

      刚刚在处理类似问题时遇到tidytable。它具有类似于 tidyverse 且兼容的 separate. 函数和 data.table 速度。

      library(tidytable)
      
      separate.(col = Start_Time, into = c("Date", "Time", "Eh"), sep = " ", extra = "merge)
      

      【讨论】:

        猜你喜欢
        • 2013-09-13
        • 1970-01-01
        • 1970-01-01
        • 2020-12-26
        • 2017-09-24
        • 1970-01-01
        • 2018-06-16
        相关资源
        最近更新 更多