[英]Argument is not numeric
我想可视化感染 COVID-19 的人数,但我无法获得死亡率,因为在获得每个县的每 100,000 人口的死亡率时,死亡人数是由 int 得出的。
我想通过将“covid19j_20200613$deaths”的数据类型设置为num来找到“covid19j_20200613$POP2019 * 100”的解决方案。
Error in covid19j_20200613$deaths/covid19j_20200613$POP2019:
Argument of binary operator is not numeric
library(spdep)
library(sf)
library(spatstat)
library(tidyverse)
library(ggplot2)
needs::prioritize(magrittr)
covid19j <- read.csv("https://raw.githubusercontent.com/kaz-ogiwara/covid19/master/data/prefectures.csv",
header=TRUE)
# Below is an example for May 20, 2020.
# Month and date may be changed
covid19j_20200613 <- dplyr::filter(covid19j,
year==2020,
month==6,
date==13)
covid19j_20200613$CODE <- 1:47
covid19j_20200613[is.na(covid19j_20200613)] <- 0
pop19 <- read.csv("/Users/carlobroschi_imac/Documents/lectures/EGDS/07/covid19_data/covid19_data/pop2019.csv", header=TRUE)
covid19j_20200613 <- dplyr::inner_join(covid19j_20200613, pop19,
by = c("CODE" = "CODE"))
# Load Japan prefecture administrative boundary data
jpn_pref <- sf::st_read("/Users/carlobroschi_imac/Documents/lectures/EGDS/07/covid19_data/covid19_data/jpn_pref.shp")
# Data and concatenation
jpn_pref_cov19 <- dplyr::inner_join(jpn_pref, covid19j_20200613, by=c("PREF_CODE"="CODE"))
ggplot2::ggplot(data = jpn_pref_cov19) +
geom_sf(aes(fill=testedPositive)) +
scale_fill_distiller(palette="RdYlGn") +
theme_bw() +
labs(title = "Tested Positiv of Covid19 (2020/06/13)")
# Mortality rate per 100,000 population
# Population number in units of 1000
as.numeric(covid19j_20200613$deaths)
covid19j_20200613$deaths_rate <- covid19j_20200613$deaths / covid19j_20200613$POP2019 * 100
prefectures.csv
https://docs.google.com/spreadsheets/d/11C2vVo-jdRJoFEP4vAGxgy_AEq7pUrlre-i-zQVYDd4/edit?usp=sharing
pop2019.csv
https://docs.google.com/spreadsheets/d/1CbEX7BADutUPUQijM0wuKUZFq2UUt-jlWVQ1ipzs348/edit?usp=sharing
我尝试在计算之前输入“as.numeric(covid19j_20200613$deaths)”并将死亡人数设置为 num,但在计算过程中我收到了相同的错误消息。
iMac M1 2021,R 4.2.0
使用www.DeepL.com/Translator翻译(免费版)
as.numeric()
不会永久更改数据类型 - 它只是临时更改。
因此,当您运行as.numeric(covid19j_20200613$deaths)
时,这会将deaths
列显示为数字,但该列将保留一个字符。
所以如果你想强制数据类型,你还需要重新分配:
covid19j_20200613$deaths <- as.numeric(covid19j_20200613$deaths)
covid19j_20200613$POP2019 <- as.numeric(covid19j_20200613$POP2019)
# Now you can do calculations
covid19j_20200613$deaths_rate <- covid19j_20200613$deaths / covid19j_20200613$POP2019 * 100
如果您使用dplyr
的mutate
,则更容易阅读:
covid19j_20200613 <- covid19j_20200613 |>
mutate(
deaths = as.numeric(deaths),
POP2019 = as.numeric(POP2019),
death_rate = deaths / POP2019 * 100
)
结果
deaths POP2019 deaths_rate
1 91 5250 1.73333333
2 1 1246 0.08025682
3 0 1227 0.00000000
4 1 2306 0.04336513
5 0 966 0.00000000
PS:你的问题真的很难理解! 有很多东西我们实际上不需要回答,所以这让我们更难确定问题出在哪里。 例如,所有的数据导入、连接、ggplot...
写问题时,请仅包含导致问题的最小元素。 在您的情况下,我们只需要一个包含deaths
和POP2019
列的示例数据集,以及您最后尝试修复的两行代码。
如果您查看str(covid19j)
,您会看到deaths
列是一个包含大量空格的字符列。 您需要弄清楚该列的结构才能正确阅读它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.