R fread and strip 白色

Posted

技术标签:

【中文标题】R fread and strip 白色【英文标题】:R fread and strip white 【发布时间】: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跨度> 【参考方案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功能已经升级,所以现在是这样。

以上是关于R fread and strip 白色的主要内容,如果未能解决你的问题,请参考以下文章

fread函数的用法

如何使用 fread 读取 R 中的 gz 文件?

R data.table v1.9.6 中的错误 - 函数“fread”

R:使用 fread 或等价物从文件中读取随机行?

读取大数据集时在 R 3.4 中找不到函数“fread”

R 中的 fread 将一个大的 .csv 文件导入为一行的数据框