【问题标题】:R fread and strip whiteR fread and strip 白色
【发布时间】:2014-05-10 13:01:48
【问题描述】:

我有一个带有额外空格的 csv 文件,我想将其作为数据帧读入 R,去除空格。

这可以通过使用来实现

testdata<-read.csv("file.csv", strip.white=TRUE)

问题是数据集很大,大约需要半个小时。 fread 函数至少快两倍,但没有 strip.white 函数。

library("data.table")
testdata<-data.frame(fread("file.csv"))

有没有一种快速的方法可以在读入后从列中去除空格,或者有什么方法可以使用 fread 去除空格?

如果只是一次导入,我不会那么介意,但我需要定期多次这样做。

【问题讨论】:

  • 现在fread中有一个参数strip.white默认设置为TRUE,你也可以通过data.table = FALSE给fread在读取数据集后接收data.frame跨度>

标签: r csv fread strip removing-whitespace


【解决方案1】:

您可以使用来自stringr 包的str_trim

library(stringr)
testdata[,sapply(.SD,str_trim)]

默认情况下它会修剪两边的空白,但你可以设置边:

testdata[,sapply(.SD,str_trim,side="left")]

【讨论】:

  • 谢谢,这样就可以了。但是,我的同事在 R 之外有一个解决方案。他在本地 Mac OSX 机器上使用 PERL 命令来剥离填充: perl -lape 's/\s+//sg' /path/to/file.csv > /path/ to/fileV2.csv 这会减小文件大小并在将其读入 R 之前去除空格。
  • 请注意:如果数字列还包含空格,则使用@agstudy 的解决方案会将数字列转换为 chr。否则,很好的解决方案。
【解决方案2】:

现在fread中有一个参数strip.white默认设置为TRUE,你也可以在读取数据集后将data.table = FALSE传递给fread以接收data.frame

【讨论】:

  • 谢谢,自从我第一次遇到这个问题以来,fread功能已经升级,所以现在是这样。
猜你喜欢
  • 2012-12-18
  • 2011-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 2022-11-02
相关资源
最近更新 更多