R 将“因子类型”列中的NA替换为0
我有一个连续字段(HighBAC),我试图根据BAC是否属于某个范围对其进行分类: BAC>=.16或<.21:类别1 BAC>=.09或<.16:第2类R 将“因子类型”列中的NA替换为0,r,R,我有一个连续字段(HighBAC),我试图根据BAC是否属于某个范围对其进行分类: BAC>=.16或=.09或
State Year high_bac
Alabama 2016 0.15
Alabama 2015 0.15
Alabama 2011 N
Alabama 2010 N
Arizona 2016 0.15
Arizona 2015 0.15
Idaho 2016 0.2
Idaho 2015 0.2
Idaho 2014 O
Idaho 2013 O
但在我用NA
替换“N”和“O”字符之前,我不能这样做。否则,cut()
函数将无法工作
df_codes$high_bac[df_codes$high_bac=='N'|df_codes$high_bac=='O'] = NA
df_codes$high_bac = as.numeric(df_codes$high_bac)
df_codes$high_bac <- cut(df_codes$high_bac, breaks=c(.09, .16, .22), right=FALSE, labels=c(2:1))
在我对它们进行分类后,我想用0s替换NA
s,因为0是一个特殊代码(不应作为一个类别包含)。但是,当我使用中建议的解决方案时,会出现以下错误:
df_codes$high_bac[is.na(df_codes$high_bac)] <- 0
df_codes$high_bac[is.na(df_codes$high_bac)]cut
给出一个系数
输出。将列转换为character
类,它就可以工作了。但是,最好还是留着它,因为NAI把它转换成了角色形式,而且它很有效——谢谢。我同意,最好将其保留为NA,但我被要求将其更改为零。谢谢你的帮助,很抱歉问了个简单的问题——我是R语言的新手。df\u codes$high\u bac这正是我所要找的——我无法理解将0作为特殊代码包含的label
语法(即,不包括在范围内,并且在不应该有任何点数的情况下意外地给它一个高分值)。谢谢!
df_codes$high_bac[is.na(df_codes$high_bac)] <- 0