【问题标题】:Is there a way to read in a large document as a data.frame in R?有没有办法将大型文档作为 R 中的 data.frame 读取?
【发布时间】:2020-07-25 00:50:47
【问题描述】:

我正在尝试在存储到csv 文件中的大型数据集上使用 ggplot2。我以前用excel看的。

我不知道如何将此数据转换为data.frame。特别是,我有一个具有以下格式的日期列:“2020/04/12:12:00”。我怎样才能让R 理解这种格式?

【问题讨论】:

    标签: r dataframe ggplot2


    【解决方案1】:

    仅就这个问题而言,我建议使用 openxlsx 包,它帮助我显着减少了读取大型数据集的时间。根据您的问题和 cmets,您可能会发现这三点很有帮助

    • 读取命令与 xlsx 包相同,但建议您使用 openxlsx::read.xslx(file_path)
    • 参数还是一样的,但是在 sheetIndex 的位置是 sheet 并且它只需要数字
    • 如果将现有列转换为字符,那么简单的 as.Date 就可以了

    【讨论】:

    • 啊,好吧,但是当我去绘图时,我仍然得到一个错误代码“错误:data 必须是一个数据框,或者由fortify() 强制的其他对象,而不是一个字符向量”.. . "RiverWensum
    【解决方案2】:

    如果是csv,可以使用:

    • fread 函数来自 data.table。这将是读取 csv 的最快方法。
    • read_csvread_csv2(用于 ; 分隔的文档)在 readr 包中

    如果是.xls(或.xlsx)文档,请查看readxl 包。

    所有这些函数都将您的数据导入为data.frames(附加类如data.table 用于freadtibble 用于read_csv)。

    编辑

    根据您的评论,您的文件看起来不是 excel 而是 csv。如果您想将列类型转换为日期,假设您的数据框称为df

    df[, dates := as.POSIXct(get(colnames(df)[1]), format = "%Y/%m/%d:%H:%M")]
    

    请注意,您不需要使用cbind,甚至不需要重新分配data.table,因为您使用的是:= 运算符

    正如消息所说,您不需要POSIXlt 的额外精度

    【讨论】:

    • 我认为 fread 确实加载了它 - 但在我可以绘制之前,我需要将日期列更改为 Rdates 以便 R 可以读取它 - 这在正常读取并使用时很好:Rdates
    • 我基于这个post向你提出了这个问题的解决方案。你不需要cbind向量,你data.table你可以直接通过创建/删除新列来修改数据框
    • 很好,但是当我现在(在日期设置代码之后)绘制数据时,就像这样......“ggplot(data="df", aes(x="Date/time ( yyyy/mm/dd:hh:mm)", y="y column", group=1))+ geom_line()+ geom_point()" ...我收到此警告:“错误:data 必须是数据框,或由fortify() 强制转换的其他对象,而不是字符向量"
    • 这很正常,这个语法有几个错误。你应该使用ggplot(data=df, aes(x = x_var, y=y_var)) + geom_line()+ geom_point()。将 x_vary_var 更改为变量的名称(不带引号)
    • 嗯,仍然出现错误(意外的符号和设防错误) - ... RiverWensum
    猜你喜欢
    • 2019-10-05
    • 2020-04-21
    • 2017-08-24
    • 2015-01-13
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多