【问题标题】:How to remove white space from a data frame in R, when importing from SPSS从SPSS导入时如何从R中的数据框中删除空格
【发布时间】: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。

标签: r dataframe spss


【解决方案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语言)。

      【讨论】:

        猜你喜欢
        • 2016-10-05
        • 1970-01-01
        • 1970-01-01
        • 2017-05-30
        • 1970-01-01
        • 2022-11-25
        • 1970-01-01
        • 2014-01-12
        • 2023-02-11
        相关资源
        最近更新 更多