从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 <- as.data.set(spss.system.file(file.choose()))
或者
dataset <- 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中的数据框中删除空格的主要内容,如果未能解决你的问题,请参考以下文章