R fread和去除空格

9
我有一个带有额外空格的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 - Marcin
2个回答

4

目前 fread 默认情况下设置了一个名为 strip.white 的参数,并且您还可以在调用 fread 时传递 data.table = FALSE 参数以在读取数据集后获得一个 data.frame


1
谢谢,自从我第一次遇到这个问题以来,fread函数已经升级了,所以现在这是正确的方法。 - DaReal

4
您可以使用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之前去除空格。 - DaReal
只是提个小小的注意事项:使用 @agstudy 的解决方案会把包含空格的数字列转换成字符列。否则,这是一个不错的解决方案。 - fridaymeetssunday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接