【问题标题】:Importing csv file to R - factors read as characters将 csv 文件导入 R - 读取为字符的因子
【发布时间】:2017-06-09 14:55:44
【问题描述】:

R 的新手。在导入 csv 文件时,列实际上是 - 或应该是 - 因素时被读取为字符。所讨论的所有三列都只有两个级别(是/否和男性/女性)。

我的尝试: 在“导入文本数据”对话框中,我通过插入逗号分隔的因子列表将列更改为因子。

> LungCapDataCSVnew <- read_csv("~/file.csv", 
  col_types = cols(Caesarean = col_factor(levels = c("no", 
  "yes")), Gender = col_factor(levels = c("male", 
  "female")), Smoke = col_factor(levels = c("no", 
  "yes"))))

> View(file)

> class(Gender)
[1] "character"

> class(Smoke)
[1] "character"

正如它所显示的,“性别”和“烟雾”列在它们应该是因素时被读取为字符。

如何解决?

【问题讨论】:

  • 也许只使用read.csv
  • 我很困惑您指的是没有数据框的列。也许您的工作区中有一个旧的附加数据框? class(LungCapDataCSVnew$Smoke) 显示什么? str(LungCapDataCSVnew)呢?
  • 您能否提供数据样本?

标签: r csv import character logical-operators


【解决方案1】:

使用可以将字符转换为因子

LungCapDataCSVnew$Smoke<-as.factor(LungCapDataCSVnew$Smoke)
LungCapDataCSVnew$Gender<-as.factor(LungCapDataCSVnew$Gender)

R 新手。 推荐网站-http://cran.r-project.org/manuals.html

谢谢

【讨论】:

    【解决方案2】:

    奇怪的是,没有任何额外参数的简单read.csv() 不会自动将您的字符作为因素读入。

    file &lt;- read.csv("~/file.csv")导入文件后可以试试

    i <- sapply(file, is.character)
    file[i] <- lapply(file[i], as.factor)
    

    将所有字符列转换为因子

    【讨论】:

    • 谢谢 - 很大的帮助
    【解决方案3】:

    正如我刚刚发现的: read.csv 似乎可以检测因素和水平 read_csv 没有,它只是将列标题分配为一个字符。

    【讨论】:

      猜你喜欢
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      相关资源
      最近更新 更多