[Day-17] R语言 - 分群应用(一) GMM数值补值-下 ( Fill.NA with GMM in R.Studio )

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

影片程序码 (延续昨天)

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

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

iris_na_fill <- left_join(iris_na_fill,final_mean,by='分群')

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)) 
done <- iris_na_fill[17:20]

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


<<:  如何制作一个精美的网站

>>:  启动专案 (Docker)

LeetCode解题 Day22

1239. Maximum Length of a Concatenated String with...

连续 30 天 玩玩看 ProtoPie - Day 23

今天来玩这个,模拟一个旋转钮。 (其实是 Slider 但这东西真不容易翻译。等等直接看图片吧。) ...

README,写在开赛第一天

去年写了跟自身专业 Android 题目,在每天固定输出文字是一种表达的练习。而今年持续分享自己的在...

Turbo Pascal 语言和你 SAY HELLO!!

第二十八天 各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是希望分享给点进来的朋友,...

Leetcode 挑战 Day 01 [前言与 1. Two Sum]

前言 我是一位程序设计的初学者,对程序设计非常有兴趣,希望在这个系列的Leetcode挑战中能提升自...