首先,我是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
我认为问题与黄色单元格上的数字有关。
示例输入:
答案 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 )
答案 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)
总之,您应该将其转换为数据框,替换/删除值不是数字的行,然后执行摘要统计信息。