[英]Using "tidyverse" to replace NA values in columns not working correctly nor giving an error message. [R]
我正在尝试用“UNK”替换列中的 NA 值,以便能够执行逻辑回归。
这里分别是代码和它们的输出。 我只想列出我为上下文采取的每个步骤(重要的是要注意我没有包括每一列,但所有列都会发生同样的问题):
donors <- read_csv("donors.csv", col_types = "nnffnnnnnnnnffffffffff")
glimpse(donors)
Rows: 95,412
Columns: 22
$ age <dbl> 60, 46, NA, 70, 78, NA, 38, ~
$ numberChildren <dbl> NA, 1, NA, NA, 1, NA, 1, NA,~
$ incomeRating <fct> NA, 6, 3, 1, 3, NA, 4, 2, 3,~
在这里,我只是挑出了分解的特征,以便更清楚地看到它们:
donors %>% keep( is.factor) %>% summary()
incomeRating wealthRating inHouseDonor
NA :21286 NA :44732 FALSE:88709
5 :15451 9 : 7585 TRUE : 6703
2 :13114 8 : 6793
4 :12732 7 : 6198
1 : 9022 6 : 5825
3 : 8558 5 : 5280
(Other):15249 (Other):18999
现在,我尝试将 incomeRating 列(和其他列)中的所有 NA 值替换为“UNK”:
donors <- donors %>% mutate( incomeRating = as.character( incomeRating))
%>% mutate( incomeRating = as.factor( ifelse( is.na( incomeRating), 'UNK', incomeRating)))
没有错误消息,但是当我像这样检索比例值表时,NA 不会被替换:
donors%>%
select(incomeRating) %>%
table() %>%
prop.table()
1 2 3 4 5
0.09455834 0.13744602 0.08969522 0.13344233 0.16193980
6 7 NA
0.08152014 0.07830252 0.22309563
同样,所有列都会发生这种情况。 我相信 R 将 NA 读取为实际值,因此我不能使用 is.na() 命令读取这些值。 如果是这种情况,解决方案是什么? 提前谢谢你。
尝试来自fct_explicit_na
forcats
的 fct_explicit_na:代码未测试!
library(forcats)
library(dplyr)
donors <- donors %>%
mutate(incomeRating = fct_explicit_na(incomeRating, "UNK")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.