r - 如何将具有特定索引的每一行变成另外两行?
问题描述
我有这个数据集:link。我正在用它制作一个等值线,但有些名称与world
数据框不匹配( from mapproj
,用map_data
from转换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)
我意识到我问这个的方式不是很清楚,所以如果我能以任何方式提供帮助......
解决方案
如果您可以使用要分隔的国家/地区名称创建一个小标题(此处称为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_data和new_names_tbl将由变量location连接。这应该可以解决问题!