【问题标题】:Removing levels in data frame when importing csv data导入 csv 数据时删除数据框中的级别
【发布时间】:2014-12-03 05:33:04
【问题描述】:

我正在使用

将 csv 数据导入 R
data <- read.csv(file="file_name.csv")

此数据有 9 列和 5000 行,数据值为实数。现在我想将此数据用作数据框。但是第一列出现在某些级别。我不想要这个关卡。

这是 .csv 格式的示例数据

在将第一列导入 R 后,谁能帮我删除第一列中的级别。

这是我的尝试:

data$col_1 = as.numeric(as.character(data$col_1))

但它显示警告:

Warning message:
NAs introduced by coercion 

【问题讨论】:

  • 这与我在尝试中写的警告相同。
  • 你应该包含样本数据来解决这个问题reproducible否则很难帮助你。
  • 我添加了示例数据。
  • 您的屏幕截图没有画出完整的画面。 somewhere 的值可能不是明确的数字。此外,屏幕截图中的列名为Var_1 Var_2 Var_3,但您的代码作用于col_1

标签: r csv


【解决方案1】:

read.csv 基本上是read.table 的封装,关闭stringsAsFactors 即可。

data <- read.csv(file="filename", stringsAsFactors=FALSE)

那么我猜该列将被视为characters。然后你可以这样做来转换为数字。:

data$col <- as.numeric(data$col)

注意:如果你有一个只包含数字的干净列,read.csv 将智能地读入为数字,如果它读入为factors,则意味着 R 检测到文本或非数字的东西。您可能需要关注warnings,看看哪些记录由于什么原因被转换为 NA。

例如,我有一个 csv 文件。

当我读入时,id 列将被视为characters,因为有一行包含ohyeah(如果它为空或 NA,R 仍会将列视为数字)。我建议您首先对已被污染的记录进行子集化,看看这是否是一个大问题。

> subset(data, is.na(as.numeric(id)))
  name     id
4  dan ohyeah
Warning message:
In eval(expr, envir, enclos) : NAs introduced by coercio

【讨论】:

  • 感谢关注。此代码给出警告:强制引入的 NAs。
猜你喜欢
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 2016-11-09
相关资源
最近更新 更多