替换 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))
我有以下数据框:
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))