替换 R 数据框中的指定值

Replacing specified value within R dataframe

我有以下数据框:

structure(list(Country = c("France", "France", "France", "France", 
"France", "France"), Year = c("2005", "2006", "2007", "2008", 
"2009", "2010"), `Exports (US$)` = c(5.81084e+11, 6.31842e+11, 
7.2246e+11, 8.00627e+11, 6.48448e+11, 6.89363e+11), `Exports (% GDP)` = c(26.36883754, 
27.17584676, 27.12839279, 27.38622642, 24.07163011, 26.04322983
), `Imports (US$)` = c(5.90215e+11, 6.51268e+11, 7.56838e+11, 
8.51828e+11, 6.86824e+11, 7.39179e+11), `Imports (% GDP)` = c(26.78317677, 
28.01139825, 28.41931057, 29.13761054, 25.49621793, 27.9252092
), `Balance (US$)` = c(-9130705136, -19426671685, -34378592937, 
-51201113227, -38375937760, -49815894040), `Trade (% GDP)` = c(53.1520143, 
55.18724501, 55.54770336, 56.52383696, 49.56784804, 53.96843903
), `Tourism Arrivals` = c(74988000, 77916000, 80853000, 79218000, 
76764000, 76647000), `Tourism Revenue (US$)` = c(5.2139e+10, 
5.4587e+10, 6.3902e+10, 6.8001e+10, 5.8858e+10, 5.6187e+10), 
    `Tourism Contibution (US$)` = c(3.8643e+10, 3.9299e+10, 4.6051e+10, 
    5.0361e+10, 4.505e+10, 4.6704e+10), `Mean Tariff (%)` = c(2.25, 
    2.39, 2.35, 2.25, 2.15, 1.94), `Agricultural Exports (%)` = c(0.936616468, 
    0.915495223, 0.902626815, 0.823376135, 0.840151761, 0.933187394
    ), `Foodstuffs Exports (%)` = c(10.69433359, 10.44921899, 
    10.9074663, 11.55678858, 12.39583246, 11.97388386), `Fuel Exports (%)` = c(4.097126345, 
    4.294184258, 3.824605043, 5.054913327, 3.571240809, 3.658869025
    ), `Manufactured Exports (%)` = c(80.1542151, 79.39097148, 
    79.11453511, 77.56776592, 78.65649747, 78.43552158), `Ores and Metals Exports (%)` = c(2.127772482, 
    2.836640524, 2.89583644, 2.62004432, 1.961798176, 2.460245868
    )), row.names = c(NA, 6L), class = "data.frame")

在我的 'Mean Tariff (%)' 列中,有四个空值。我想根据不同的标准替换来自不同国家的空值。

基本上,我想用我单独计算的特定值替换土耳其缺失的关税值,并对缺失的瑞士和俄罗斯值执行相同的操作(用特定国家/地区的解决方案替换缺失值) .

有没有办法让我指定要用输入值替换的值的坐标(例如,土耳其语值位于第 12 列、第 88 行和第 90 行)?

如果你想专门替换某些“坐标”,你可以做某事。喜欢

my_data[c(88, 90), 12] <- NEWVALUE

否则,如果您想抽象您的问题并找到更通用的解决方案,您可以使用 ifelse 命令。例如

my_data$COLUMN <- ifelse(my_data$COUNTRY == "Turkey", NEWVALUE, my_data$COUNTRY).

如果你有几个条件,我推荐case_when:

library(tidyverse)
my_data <- my_data %>%
  mutate(COLUMN = case_when(COUNTRY == "TURKEY" ~ NEWVALUE1,
                            COUNTRY == "France" ~ NEWVALUE2))