首页 > 解决方案 > 如何将具有特定索引的每一行变成另外两行?

问题描述

我有这个数据集:link。我正在用它制作一个等值线,但有些名称与world数据框不匹配( from mapproj,用map_datafrom转换ggplot2)。其中之一是Trindad and Tobago,我想用两个(​​或四个,如果有两个匹配项;或六个......)其他行替换,除了这个细节 - 名称之外与原始行相同。一个应该被命名Trindad,另一个,Tobago

我认为可能有一些功能(如果它是一整行,我会使用separate_rows()from tidyr)听起来像这样:function_name("Trindad and Tobago", sep = " and "),但我不知道。

这些是我另外加载的包(最好使用这些包而不是其他包,或者至少在tidyverse

library(ggplot2)
library(dplyr)
library(tidyr)
library(readr)
library(mapproj)

我意识到我问这个的方式不是很清楚,所以如果我能以任何方式提供帮助......

标签: rformat

解决方案


如果您可以使用要分隔的国家/地区名称创建一个小标题(此处称为new_names_tbl),则可以将其加入您的covid_data

library(tibble)
library(tidyr)


covid_data <- tibble::tribble(
  ~location, ~cases,
  "Afghanistan",  12,
  "USA", 34,
  "Trindidad and Tobago", 45
)



new_names_tbl <- tibble::tribble(
  ~location, ~new_names_variable,
  "Trindidad and Tobago", "Trinidad",
  "Trindidad and Tobago", "Tobago"
  
)

covid_data %>% 
  left_join(new_names_tbl, by = c("location" = "location")) %>% 
  mutate(location = case_when(is.na(new_names_variable) ~ location, TRUE ~ new_names_variable)) %>%
  select(-new_names_variable)

在这里,我明确指出coid_datanew_names_tbl将由变量location连接。这应该可以解决问题!


推荐阅读