我正在尝试在 R 中预处理我的数据,以便我可以对属于与给定元组相同的类的所有样本使用 “属性均值”< / em>
数据源提供程序已将缺失值或超出范围的值指定为值-1。但是我想根据上面粗体描述的数据挖掘原则替换那些缺失值。作为我的类决策者的列是“事故严重性”,我想为属于相同级别的事故严重性的所有样本赋予属性均值,使其具有缺少属性值的元组严重性级别。
由于有多个列缺少值,我想我必须一次一个地对所有列重复执行taskk。我应该使用什么r命令。
我的数据框中主要有两种类型的数据类型(向量)。因子用于日期和时间列,其中整数用于大多数其他列。
有没有办法在堆栈溢出时上传数据集的子集?
这是指向可重现数据集https://drive.google.com/file/d/0B3cafW7J7xSfSkRTYWRWMHhaU2c/edit?usp=sharing
的链接更新2:既然存在数据集,请帮助我将任何列中“-1”的值更改为值,该值是具有相同值的所有元组的平均值将“Accident_severity”属性作为具有缺失值的元组。
更新3:请忽略列“X2_roadclass”和“X2_Road_type”,因为它们大多是空白的,我正在放弃它们。感谢
答案 0 :(得分:0)
请查看这是否接近您的需要
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)
有一些-1
df$factor2[3] <- -1
df$factor1[1] <- -1
用NA替换它们
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
...