繁体   English   中英

参数不是数字

[英]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

如果您使用dplyrmutate ,则更容易阅读:

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...

写问题时,请仅包含导致问题的最小元素。 在您的情况下,我们只需要一个包含deathsPOP2019列的示例数据集,以及您最后尝试修复的两行代码。

如果您查看str(covid19j) ,您会看到deaths列是一个包含大量空格的字符列。 您需要弄清楚该列的结构才能正确阅读它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM