提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
缺失值
导入玩家的玩牌游戏数据
#player <- read.csv("./data/chapter05/玩家玩牌数据.csv",F,na.strings = “NA”)
player <- read.csv("./data/chapter05/玩家玩牌数据.csv",F)
head(player)
str(player)
player_col_names <- c(“用户id”,“性别”,“等级”,“站内好友数”,“经验值”,
“积分”,“登录总次数”,“玩牌局数”,“赢牌局数”,“身上货币量”)
查看变量名
colnames(player) <- player_col_names
colnames(player)
查看前六行
head(player)
利用is.na函数判断“玩牌局数”变量各值是否为缺失值
is.na(player$玩牌局数)
统计缺失值与非缺失值的个数
table(is.na(player$玩牌局数))
sum()和mean()函数来统计缺失值的个数和占比
#计算缺失值个数
sum(is.na(player$玩牌局数))
#计算缺失值占比
mean(is.na(player$玩牌局数))
利用complete.cases函数查看完整实例
sum(complete.cases(player))
用md.pattern函数查看player的缺失值模式
if(!require(mice)) install.packages(“mice”)
md.pattern(player)
–删除缺失样本
sum(!complete.cases(player))
player_full <- na.omit(player)
计算有缺失值的样本个数
sum(!complete.cases(player_full))
–替换缺失值
iris1 <- iris[,c(1,5)]
head(iris1)
table(iris1KaTeX parse error: Expected 'EOF', got '#' at position 10: Species) #̲将40、80、120号样本的S…Sepal.Length,na.rm = T);Sepal.Length.mean
iris1[c(40,80,120),1] <- round(Sepal.Length.mean,1)
iris1[c(40,80,120),1]
查看以前的值和现在的值
iris[c(40,80,120),1];iris1[c(40,80,120),1]
利用同类均值进行赋值的方式来填补缺失值
#将40、80、120号样本的Sepal.Length设置为缺失值
iris2 <- iris[,c(1,5)]
iris2[c(40,80,120),1] <- NA
iris2[40,1] <- round(mean(iris2[iris1 S p e c i e s = = ′ s e t o s a ′ , ′ S e p a l . L e n g t h ′ ] , n a . r m = T ) , 1 ) i r i s 2 [ 80 , 1 ] < − r o u n d ( m e a n ( i r i s 2 [ i r i s 1 Species=='setosa','Sepal.Length'], na.rm = T),1) iris2[80,1] <- round(mean(iris2[iris1 Species==′setosa′,′Sepal.Length′],na.rm=T),1)iris2[80,1]<−round(mean(iris2[iris1Species==‘versicolor’,‘Sepal.Length’],
na.rm = T),1)
iris2[120,1] <- round(mean(iris2[iris1$Species==‘virginica’,‘Sepal.Length’],
na.rm = T),1)
#查看以前的值和现在的值
iris[c(40,80,120),1];iris1[c(40,80,120),1];iris2[c(40,80,120),1]
数据转换:
导入数据
rawdata <- read.csv(“D://小学期/数据转换数据.csv”)
#查看数据的前六行
head(rawdata)
str(rawdata)
#将注册日期变量转换成日期格式
rawdata r e g i s t r a t