如何预处理数据以处理R中的缺失值

如何预处理数据以处理R中的缺失值,r,dataframe,statistics,dataset,data-mining,R,Dataframe,Statistics,Dataset,Data Mining,我试图在R中预处理我的数据,这样我就可以对与给定元组属于同一类的所有样本使用“属性平均值” 数据源提供程序已为缺少的值或超出范围的值指定了值-1。但我想根据上面用粗体表示的数据挖掘原则替换那些缺失的值。作为我的类决策者的列是“事故严重性”,我想为所有属于相同事故严重性级别的样本提供属性平均值,作为缺少属性值的元组的严重性级别 由于有多个列缺少值,我想我必须一次对所有列重复执行taskk。我应该使用什么r命令 我的数据框中主要有两种类型的数据类型(向量)。。因子用于日期和时间列,其中整数用于大多数

我试图在R中预处理我的数据,这样我就可以对与给定元组属于同一类的所有样本使用“属性平均值”

数据源提供程序已为缺少的值或超出范围的值指定了值-1。但我想根据上面用粗体表示的数据挖掘原则替换那些缺失的值。作为我的类决策者的列是“事故严重性”,我想为所有属于相同事故严重性级别的样本提供属性平均值,作为缺少属性值的元组的严重性级别

由于有多个列缺少值,我想我必须一次对所有列重复执行taskk。我应该使用什么r命令

我的数据框中主要有两种类型的数据类型(向量)。。因子用于日期和时间列,其中整数用于大多数其他列

是否有一种方法可以在堆栈溢出时上载数据集的子集

以下是可复制数据集的链接

更新2:既然数据集已经存在,请帮助我将任何列中有“-1”的值更改为一个值,该值是所有元组的平均值,这些元组的属性“事故严重性”的值与缺少值的元组的值相同


更新3:请忽略colums的“X2_道路等级”和“X2_道路类型”,因为它们大部分是空白的,我正在删除它们。谢谢

请查看这是否符合您的需要

library(ggplot2)
library(reshape)
library(plyr)
创建一些数据

   set.seed(1)
    df <- data.frame(severity=rep(c('high', 'moderate', 'low'), each = 3),
                     factor1 = rep(c(1,2,3), each = 6),
                     factor2 = rep(c(4,5,6), times = 3),
                     date=rep(c('2011-01-01','2011-01-03','2011-01-10'),
                           times = 3), stringsAsFactors = F)
根据提供的数据,我会这样做

dt <- read.csv('./Stackoverflow/datatry1.csv')

#head(dt[ , -c(1:3) ]) # Exclude some unwanted colums
mdt <- melt(dt[ , -c(1:3) ], id.vars= c("Accident_Severity", 'Date',
                                        'Day_of_Week', 'Time'))
dts <- ddply(mdt, .(Accident_Severity, variable), summarise,
             mean=mean(value, na.rm = T))
dts

   Accident_Severity                   variable         mean
1                  1         Number_of_Vehicles   1.00000000
2                  1            X1st_Road_Class   3.00000000
3                  1           X1st_Road_Number 503.00000000
4                  1                  Road_Type   6.00000000
5                  1                Speed_limit  30.00000000
6                  1            Junction_Detail   3.00000000
7                  1            X2nd_Road_Class  -1.00000000
...

dt您应该看看如何恰当地发布数据和提问,以最大限度地提高您在这里获得帮助的机会。如果您提供一个最小的、自包含的示例,帮助会容易得多。请检查这些链接,了解一般的想法,以及如何在R:和中执行。也有一个好看的看看。您还应该向我们展示您尝试过的代码。我正在尝试使用Dput命令,它创建了一个100 MB的文件,即使我只选择了10%的记录。。另外,当我尝试使用dget读取同一个文件时,Rstudio控制台在读取该文件时被卡住超过20分钟而没有任何结果。我应该只提取100条记录并使用Dput创建一个文件吗?@apps92:创建较小的数据子集,该子集可以粘贴到此处,并且仍然代表问题。@apps92的想法是总结所有[事故严重程度]的所有20个变量级别?我在CRAN文档中查阅了重塑包的文档,但仍然不了解melt命令是如何工作的,以及id.vars的确切作用。@apps92很快,id.vars可以被认为是您的参考变量。所有其他变量都是测量变量,始终与id.vars有关。是否有必要在id.vars中添加其他列。。我只是想根据事故来判断_severity@apps92我认为是这样。这样做的目的是得到每一次事故严重程度的平均总结。你有没有用你的数据检查上面的代码?它能带来预期的结果吗?是的。。我用我的数据尝试了上面的代码。。我没有忽略前3列,但它们仍然没有出现在输出中。。我想知道为什么。除此之外,输出看起来非常棒。。但我想这只是半途而废。。现在,我应该为所有这些30+输出结果指定平均值而不是“-1”,还是有一种可编程的方法?
df[df == -1] <- NA
mdf <- melt(df, id.vars= c("severity", 'date'))
ddply(mdf, .(severity, variable), summarise, mean=mean(value, na.rm = T))

  severity variable mean
1     high  factor1  1.6
2     high  factor2  4.8
3      low  factor1  2.5
4      low  factor2  5.0
5 moderate  factor1  2.0
6 moderate  factor2  5.0
dt <- read.csv('./Stackoverflow/datatry1.csv')

#head(dt[ , -c(1:3) ]) # Exclude some unwanted colums
mdt <- melt(dt[ , -c(1:3) ], id.vars= c("Accident_Severity", 'Date',
                                        'Day_of_Week', 'Time'))
dts <- ddply(mdt, .(Accident_Severity, variable), summarise,
             mean=mean(value, na.rm = T))
dts

   Accident_Severity                   variable         mean
1                  1         Number_of_Vehicles   1.00000000
2                  1            X1st_Road_Class   3.00000000
3                  1           X1st_Road_Number 503.00000000
4                  1                  Road_Type   6.00000000
5                  1                Speed_limit  30.00000000
6                  1            Junction_Detail   3.00000000
7                  1            X2nd_Road_Class  -1.00000000
...