从SPSS导入时如何从R中的数据框中删除空格

Posted

技术标签:

【中文标题】从SPSS导入时如何从R中的数据框中删除空格【英文标题】:How to remove white space from a data frame in R, when importing from SPSS 【发布时间】:2015-06-15 14:31:31 【问题描述】:

我正在使用“foreign”包中的 read.spss 将 .sav 文件读入 R。

这是来自在线调查的调查数据。但是,结果(通过 SPSS 文件)在字段中包含大面积的空白区域(我假设来自在线表单上的文本输入字段),这些在我使用 write.csv 时出现。

作为参考,这是我正在使用的代码:

dataset <- read.spss(file.choose(), to.data.frame=TRUE)

csv <- write.csv(dataset, file=file.choose(), append=FALSE, na="NA", row.names=FALSE, fileEncoding="UTF-8") 

对于我的最终 csv 输出,我可以调整它以用 NA 替换数据框中的空格吗?

【问题讨论】:

尝试使用read.spss参数trim.factor.names,否则你可以看看here。 谢谢Backlin。我想我需要澄清我的问题。它不是尾随或前导空格,而是基本上包含空格字符串的观察结果,即 " " ... 到未知长度。我想确定这些并将其更改为 NA。 【参考方案1】:

已解决: 发现使用 memisc 包并将我原来的 read.spss 函数替换为

dataset &lt;- as.data.set(spss.system.file(file.choose())) 或者 dataset &lt;- as.data.set(spss.portable.file(file.choose()))

避免自动输入大空格字符串。更多内容:Read SPSS file into R

【讨论】:

【参考方案2】:
# if your data.frame object is `x`
library(stringr)

# convert all factor columns to character
facs <- sapply( x , is.factor )
x[ facs ] <- sapply( x[ facs ] , as.character )

# trim all character columns,
# removing leading and trailing whitespace
chars <- sapply( x , is.character )
x[ chars ] <- sapply( x[ chars ] , str_trim )

【讨论】:

【参考方案3】:

我猜是小错误:

x[ facs ] <- sapply( x[ facs ] , as.character )

应该是:

x[ facs ] <- lapply( x[ facs ] , as.character )

lapply 而不是sapply

(不知道为什么我这几天一直在学习R语言)。

【讨论】:

以上是关于从SPSS导入时如何从R中的数据框中删除空格的主要内容,如果未能解决你的问题,请参考以下文章

键入文本时在运行时从文本框中删除空格

R中的标签(从SPSS添加一些标签)

删除 Spark 数据框中的空格时出错 - PySpark

如何从 r 中的数据框中删除标题行? [复制]

如何从R中的数据框中删除负值

用SAS工具时 导入数据的变量名有空格 怎么可以用KEEP把带空格变量名这一列留着??