如何解决R:将String值更改为NA,得到强制错误
我有一个名为data
的数据集,看起来像这样:
Year Population
1 2005 3000
2 2006 4000
3 2007 5000
4 2008 6000
5 2009 NP
6 2010 NP
7 2011 NP
8 2012 6000
9 2013 3000
我想获取count列的平均值,但是由于NP不是数字值,因此我想将其转换为NA。我使用了以下代码:
data %>% mutate(Count = as.numeric(Count))
但是,我收到一条错误消息,说强制性引入了NA。如何将所有值转换为数字并避免出现此错误?
解决方法
这不是错误,只是警告消息。
1)我们可以用Spreedly.on('paymentMethod')
suppressWarnings
例如
data$Count <- suppressWarnings(as.numeric(data$Count)))
最直接的转换方法是应用v1 <- c(1,2,3,'a','b')
suppressWarnings(as.numeric(v1))
#[1] 1 2 3 NA NA
而不进行任何其他操作。 as.numeric
是一封友好的消息。
2)如果我们想在没有警告的情况下转换为warning
,则另一种选择是将numeric
替换为`NA
NP
3)或另一种选择是基于非数字字符将library(dplyr)
data %>%
mutate(Count = as.numeric(na_if(Count,'NP')))
的元素replace
NA
我们可以在library(stringr)
data %>%
mutate(Count = as.numeric(replace(Count,str_detect(Count,'\\D'),NA)))
或summarise
内获得摘要输出
mutate
,
您可以通过多种方式执行此操作。
多种方式包括-
- 使用
grepl
,我们可以将Population
列中具有非数字字符的所有值都转换为NA
,并将其转换为数字。
df$Population[grepl('\\D',df$Population)] <- NA
df$Population <- as.numeric(df$Population)
df
# Year Population
#1 2005 3000
#2 2006 4000
#3 2007 5000
#4 2008 6000
#5 2009 NA
#6 2010 NA
#7 2011 NA
#8 2012 6000
#9 2013 3000
- 使用
parse_number
:
df$Population <- readr::parse_number(df$Population)
完成此操作后,您可以像往常一样使用na.rm = TRUE
执行所有数学运算。
mean(df$Population,na.rm = TRUE)
sum(df$Population,na.rm = TRUE)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。