r - 根据另一列中的值将函数应用于给定列的特定行
问题描述
抱歉,我认为可能有一个非常简单的答案,我无法锻炼。
我有一张我修改过的表。我只想插入 Years=2010:2020 的人口。该表仅包含 1 个国家/地区,但该表有 16107 行。
我知道插值方程是:mutate_at(vars(population, gdp.x), na.approx, method="linear"
我试过申请:apply(ssp[5,6], ssp[2]==2010:2020, mutate_at(vars(population, gdp.x), na.approx, method="linear"))
Groups: Country [177]
Country Year Model Scenario population gdp.x SSP Version Date Series.Name Series.Code Country.Code gdp.y
<chr> <dbl> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
1 Afghanistan 2010 OECD Env-Growth SSP2_v9_130325 28.0 0.0159 SSP2 v9 130325 NA NA NA NA
2 Afghanistan 2011 OECD Env-Growth SSP2_v9_130325 NA NA SSP2 v9 130325 NA NA NA NA
3 Afghanistan 2012 OECD Env-Growth SSP2_v9_130325 NA NA SSP2 v9 130325 NA NA NA NA
4 Afghanistan 2013 OECD Env-Growth SSP2_v9_130325 NA NA SSP2 v9 130325 NA NA NA NA
5 Afghanistan 2014 OECD Env-Growth SSP2_v9_130325 NA NA SSP2 v9 130325 NA NA NA NA
6 Afghanistan 2015 OECD Env-Growth SSP2_v9_130325 31.8 0.0206 SSP2 v9 130325 NA NA NA NA
7 Afghanistan 2016 OECD Env-Growth SSP2_v9_130325 NA NA SSP2 v9 130325 NA NA NA NA
8 Afghanistan 2017 OECD Env-Growth SSP2_v9_130325 NA NA SSP2 v9 130325 GDP growth, constant 2010 USD NYGDPMKTPKDZ AFG 2.7
9 Afghanistan 2018 OECD Env-Growth SSP2_v9_130325 NA NA SSP2 v9 130325 GDP growth, constant 2010 USD NYGDPMKTPKDZ AFG 1.8
10 Afghanistan 2019 OECD Env-Growth SSP2_v9_130325 NA NA SSP2 v9 130325 GDP growth, constant 2010 USD NYGDPMKTPKDZ AFG 2.9
# ... with 16,097 more rows
前 20 行的输入
structure(list(Country = c("Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan"), Year = c(2010, 2011, 2012, 2013,
2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024,
2025, 2026, 2027, 2028, 2029), Model = c("OECD Env-Growth", "OECD Env-Growth",
"OECD Env-Growth", "OECD Env-Growth", "OECD Env-Growth", "OECD Env-Growth",
"OECD Env-Growth", "OECD Env-Growth", "OECD Env-Growth", "OECD Env-Growth",
"OECD Env-Growth", "OECD Env-Growth", "OECD Env-Growth", "OECD Env-Growth",
"OECD Env-Growth", "OECD Env-Growth", "OECD Env-Growth", "OECD Env-Growth",
"OECD Env-Growth", "OECD Env-Growth"), Scenario = c("SSP2_v9_130325",
"SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325",
"SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325",
"SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325",
"SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325",
"SSP2_v9_130325", "SSP2_v9_130325", "SSP2_v9_130325"), population = c(27.962207,
NA, NA, NA, NA, 31.82735098, NA, NA, NA, NA, 36.142924, NA, NA,
NA, NA, 40.89646358, NA, NA, NA, NA), gdp.x = c(0.01593680064,
NA, NA, NA, NA, 0.02062235783, NA, NA, NA, NA, 0.02575387325,
NA, NA, NA, NA, 0.03327524539, NA, NA, NA, NA), SSP = c("SSP2",
"SSP2", "SSP2", "SSP2", "SSP2", "SSP2", "SSP2", "SSP2", "SSP2",
"SSP2", "SSP2", "SSP2", "SSP2", "SSP2", "SSP2", "SSP2", "SSP2",
"SSP2", "SSP2", "SSP2"), Version = c("v9", "v9", "v9", "v9",
"v9", "v9", "v9", "v9", "v9", "v9", "v9", "v9", "v9", "v9", "v9",
"v9", "v9", "v9", "v9", "v9"), Date = c("130325", "130325", "130325",
"130325", "130325", "130325", "130325", "130325", "130325", "130325",
"130325", "130325", "130325", "130325", "130325", "130325", "130325",
"130325", "130325", "130325"), Series.Name = c(NA, NA, NA, NA,
NA, NA, NA, "GDP growth, constant 2010 USD", "GDP growth, constant 2010 USD",
"GDP growth, constant 2010 USD", "GDP growth, constant 2010 USD",
"GDP growth, constant 2010 USD", NA, NA, NA, NA, NA, NA, NA,
NA), Series.Code = c(NA, NA, NA, NA, NA, NA, NA, "NYGDPMKTPKDZ",
"NYGDPMKTPKDZ", "NYGDPMKTPKDZ", "NYGDPMKTPKDZ", "NYGDPMKTPKDZ",
NA, NA, NA, NA, NA, NA, NA, NA), Country.Code = c(NA, NA, NA,
NA, NA, NA, NA, "AFG", "AFG", "AFG", "AFG", "AFG", NA, NA, NA,
NA, NA, NA, NA, NA), gdp.y = c(NA, NA, NA, NA, NA, NA, NA, 2.7,
1.8, 2.9, -5.5, 1, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(NA,
-20L), groups = structure(list(Country = "Afghanistan", .rows = structure(list(
1:20), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr",
"list"))), row.names = 1L, class = c("tbl_df", "tbl", "data.frame"
), .drop = TRUE), class = c("grouped_df", "tbl_df", "tbl", "data.frame"
))
解决方案
我设法解决了:
我使用
mutate_at(vars(population), na.approx, method="linear")
对于我只想插入特定年份的 gdp,我使用了 case_when:
ssp<-ssp%>%mutate(gdp = case_when(Year>=2010 & Year<=2020 ~ na.approx(gdp)))
推荐阅读
- python - 为什么 request.GET.get() 返回 'None' 并且 html 元素的值在 URL 中不可见
- ios - 无法安装“[AppName]”Xcode 11.5、iOS 13.5
- javascript - 如何在Javascript中的函数表达式中给出参数?
- asp.net - 在 ASP.NET Blazor Web Assembly 客户端应用程序中使用 Auth0 注销后的登录提示
- javascript - 使用 React 将数据从表单写入本地 JSON 文件
- c++ - 我应该使我的局部变量为 const 还是可移动的?
- c++ - 派生类的 C++ 数组
- php - 在 2 个数组中查找匹配和对应的值
- c - 未定义对 xxxxxxx 的引用,链接问题 stm32cube
- node.js - 如何使用 Google OAuth 令牌初始化 Firebase Admin SDK?