我有一些数据看起来像这样:
# A tibble: 10 × 4
code country iso_o iso_d
<chr> <chr> <chr> <chr>
1 ABW Aruba ABW ABW
2 AFG Afghanistan ABW AFG
3 AGO Angola ABW AGO
4 AIA Anguilla ABW AIA
5 ALB Albania ABW ALB
6 AND Andorra ABW AND
7 ANT Netherland Antilles ABW ANT
8 ARE United Arab Emirates ABW ARE
9 ARG Argentina ABW ARG
10 ARM Armenia ABW ARM
我需要代码的前四个变量在图片中:code
,country
,iso_o
和iso_d
。变量country
包含国家名称,变量code
包含国家代码。它们是对应的。如果列iso_o中的信息与代码中的信息匹配,我希望iso_o中的单元格采用与代码对应的国家名称。提前感谢。
我期待的是:
如果code = ABW并且它对应的国家是Aruba,我希望iso_o和iso_d在有ABW的地方说Aruba
数据如下:
structure(list(code = c("ABW", "AFG", "AGO", "AIA", "ALB", "AND",
"ANT", "ARE", "ARG", "ARM"), country = c("Aruba", "Afghanistan",
"Angola", "Anguilla", "Albania", "Andorra", "Netherland Antilles",
"United Arab Emirates", "Argentina", "Armenia"), iso_o = c("ABW",
"ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW"
), iso_d = c("ABW", "AFG", "AGO", "AIA", "ALB", "AND", "ANT",
"ARE", "ARG", "ARM")), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))
3条答案
按热度按时间deikduxw1#
有点笨拙,但是:
结果
pexxcrt22#
您的问题中存在歧义,并且不完全清楚您希望输出的结果是什么。我将“如果列iso_o中的信息与代码中的信息匹配,我希望iso_o中的那个单元格采用国家名称”解释为您只想修改满足该条件的行。您可以尝试
which()
。在此示例中,df是您的数据:这将查找在“code”和“iso_o”列中具有匹配值的行
which
,如果是TRUE
,则将“country”列中的值添加到该行的“iso_o”列。但是,在问题的后面,您声明希望修改“iso_o”和“iso_d”列,在这种情况下用途:pes8fvy93#
有许多可能的方法来解决这个问题;除了已经提供的答案之外,这些解决方案中是否有适合您的用例的?
基于dplyr软件包的解决方案:
创建于2023-03-23带有reprex v2.0.2
一些基础R解决方案:
创建于2023-03-23带有reprex v2.0.2