[Day-19] R语言 - 分群应用(一) k - prototype类别补值 - 下 ( Fill.NA with k - prototype in R.Studio )

您的订阅是我制作影片的动力
订阅点这里~/images/emoticon/emoticon39.gif

影片程序码 (延续昨天)

#均值+众数 vs 列入各群权重
final_mean <- final[,c(1:4,6)] %>% 
              group_by(分群) %>% 
              summarise(col1 = mean(Sepal.Length),col2 = mean(Sepal.Width),
                        col3 = mean(Petal.Length),col4 = mean(Petal.Width)) %>% 
              mutate(总值=col1 + col2 + col3 + col4)

final_mode <- final[,c(5:6)] %>% 
              group_by(分群,Species) %>%
              summarise(众数=n()) %>% 
              top_n(1)
final_exp <- cbind(final_mean,final_mode[,2])
names(final_exp)[names(final_exp)=="Species"]="col5"

#补总差距最小 vs 每个栏位 - 每群值,取最接近的并附上权重
iris_na_fill <- iris_na[,1:4] %>%
                mutate(总值=rowSums(iris_na[,1:4],na.rm = TRUE)) %>% 
                mutate(c1差=abs(总值-subset(final_exp,分群==1)$总值)) %>% 
                mutate(c2差=abs(总值-subset(final_exp,分群==2)$总值)) %>%
                mutate(c3差=abs(总值-subset(final_exp,分群==3)$总值)) %>%
                mutate(c4差=abs(总值-subset(final_exp,分群==4)$总值)) %>% 
                mutate(最小=pmin(c1差,c2差,c3差,c4差)) %>% 
                mutate(分群=ifelse(最小==c1差,1,
                            ifelse(最小==c2差,2,
                            ifelse(最小==c3差,3,4)))) %>% 
                mutate_if(is.numeric, round, digits=1)

iris_na_fill <- left_join(iris_na_fill,final_exp,by='分群')
iris_na_fill <- cbind(iris_na,iris_na_fill[,c(11:15,17)])
iris_na_fill <- iris_na_fill %>% 
                mutate(v1 = ifelse(is.na(Sepal.Length),col1,Sepal.Length)) %>% 
                mutate(v2 = ifelse(is.na(Sepal.Width),col2,Sepal.Width)) %>% 
                mutate(v3 = ifelse(is.na(Petal.Length),col3,Petal.Length)) %>% 
                mutate(v4 = ifelse(is.na(Petal.Width),col4,Petal.Width)) %>% 
                mutate(v5 = ifelse(is.na(Species),col5,Species))
done <- iris_na_fill[12:16]

若内容有误,还请留言指正,谢谢您的指教/images/emoticon/emoticon07.gif


<<:  Day11 数据图表化 - 图表功能介绍

>>:  【第五天 - Fluter BottomNavigationBar(下)行为分析】

[Day23] 实作 - 技能

来实作一把主角技能写入快捷键吧 首先一样先改code ActionBattle_Actor的init...

[Day 9] SRE - 自动化

自动化 什麽东西可以自动化?对我而言只要可以列出SOP的事情,都可以实现自动化。 价值 一致性 当不...

Gulp 基础介绍 DAY78

在介绍 gulp 之前 当然需要知道 gulp 它是什麽 简单来说 gulp 就是 基於node.j...

Day 15: Docker-compose建立Web专案

Docker-compose 一个专案由多个container组成,如前几天的Web,前端由apac...

Day 1 : Kotlin Multiplatform Mobile ,欢迎新的跨平台挑战者

Keyword: Kotlin Multiplatform Mobile (在每篇的开头会标注这篇的...