【问题标题】:Aggregating Values From 2 DF in R在 R 中聚合来自 2 DF 的值
【发布时间】:2021-10-28 07:26:47
【问题描述】:

我正在尝试从两个 DF 计算累计确诊病例率(即每 10000 人的病例数)和按月计算的累计死亡率,并将其绘制成地图。

这是我的 DF

  • DF1 - clean_dif - [省、市、区、分区、病例、死亡、月份、ID]
  • DF2 - indo_filter_3 - [Object_ID, Village_Code, Village, ID, Province, City, District, Sub_District, Total_Populatiom, Gemometry]

这是我到目前为止所尝试的,我猜它不起作用的原因是因为 Total_Population 不在 clean_df 内,而是在 indo_filter_3 内。如何从两个不同的 DF (Indo_filter_3 & clean_df) 创建一个新的计算字段,然后创建一个叶绿素图?

new_df <- clean_df %>%
  group_by(Sub_District, Month) %>%
  summarise(`Cases` = sum(as.numeric(Cases))/Total_Population)


tmap_mode("plot")
tm_shape(new_df)+
  tm_fill("Cases_Pop",minimize = TRUE) +
  tm_borders(alpha = 0.5) 

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • 请包括确切的错误。这两个代码块中的哪一个是您面临的问题?顺便说一句 - 您可能需要协调 Cases_PopCases

标签: r dataframe geospatial


【解决方案1】:

在聚合之前考虑joining这两个数据框:

new_df <- clean_df %>%
  inner_join(indo_filter_3, by=c("Province", "City", "District", "Sub_District")) %>%
  group_by(Sub_District, Month) %>%
  summarise(`Cases` = sum(as.numeric(Cases))/Total_Population)

【讨论】:

  • 您好,感谢您的回答!我仍然收到此错误消息“错误:对象 new_df 既不是来自类 sf、星星、空间、栅格或 SpatRaster。”我的 indo_filter_3 中确实有一个几何列
  • 但是那个错误不涉及这个答案。正确的?我认为您的问题涉及计算 Cases 时需要 Total_Populationnew_df 分配。根据上面的评论,究竟是什么不起作用?如果问题现在是映射,这是一个不同的问题,而不是 Aggregating Values From 2 DF in R
  • 您好,错误与 u 提供的代码块有关,该代码块是 summarise(Cases = sum(as.numeric(Cases))/Total_Population) 的一部分。我尝试了很多方法,但我似乎仍然无法为人口病例创建叶绿体图。你能帮帮我吗
  • 很奇怪,该错误应该是您尝试的图表而不是 group_by 计算,除非 clean_dfindo_filter_3 不是 data.frame 而是其他一些类对象。请使用dputreproducible example 发布两个数据帧的head 之类的示例。
  • 请删除这些 cmets 并在您的原始问题中发布 dput。请参阅帖子下方的编辑链接。
猜你喜欢
  • 2016-08-28
  • 2021-11-04
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多