在r中读取csv,例如" general"

时间:2017-10-22 01:32:44

标签: r

首先,我是R.的新人 我的csv有一些数字被视为" general"所以我无法用数据进行数学运算。这有什么解决方案吗? 我试过data >- as.numeric ( as.character(data))但我失败了。

data <- read.csv(file="TC.csv", header=TRUE, sep=",")
data[ data == "?" ] <- NA
for(i in 1:ncol(data)) {
  data[is.na(data[,i]), i] <- mean(data[,i], na.rm = TRUE)
}

我收到此消息:

在mean.default(results)中:参数不是数字或逻辑:返回NA

我认为问题与黄色单元格上的数字有关。

示例输入:

sample

enter image description here

2 个答案:

答案 0 :(得分:0)

您收到该错误消息是因为当using System.IO; namespace UniStock.Services.ExportImport { /// <summary> /// Import manager interface /// </summary> public partial interface IImportManager { string ImportNewCodes(Stream stream); } } 函数在mean类型上运行时,您将list函数应用于numeric

在R中,处理多维数据的常用方法不是循环使用它,而是使用各种apply函数之一,它们对数据的一个维度执行操作。在这里,您正在寻找列均值,您可以通过:

<强> TC.csv

a_0,a_1,a_2,a_3,a_4
3030.93,1,1,1,1
3095.78,2,2,2,2
2932.61,3,3,?,3
3032.24,4,4,4,4
2946.25,5,5,5,5
3058.88,6,?,6,6

<强> get_mean.R

data <- read.csv(file="TC.csv", header=TRUE, sep=",", na.strings="?")

# apply( data, dimension, function, function_args )
col_means <- apply( data, 2, mean, na.rm=1 )

Apply Functions Over Array Margins

Apply a Function over a List or Vector

答案 1 :(得分:0)

您不应该遍历数据集以删除行。此外,我不相信突出显示的行是问题的根源。为了方便起见,我将数据转换为数据框。

    data <- as.data.frame(read.csv(file="TC.csv", header=TRUE, sep=","))

删除&#39;?&#39;你应该能够运行下面的代码。我认为运行下面的代码更容易,而不是将其转换为NA然后删除它。

    data <- data[!grepl('?',data$Column),]
    mean(TC$Column)
    summary(TC)

总之,您应该将其转换为数据框,替换/删除值不是数字的行,然后执行摘要统计信息。