r - 根据不同的条件重新编码多个列
问题描述
我需要根据不同的条件重新编码数据中的多个列。我放了我的数据样本:
data_test <- structure(list(county = c("algarrobo", "alhue", "alto del carmen","ancud", "andacollo", "angol", "antofagasta", "yumbel", "yungay","zapallar"),
year = c(2001, 2001, 2001, 2001, 2001, 2001, 2001,2016, 2016, 2016),
ruling = c(0, 0, 0, 1, 0, 1, 1, 0, 0, 0),
adjacent_county1 = c("el quisco", "san pedro", "tierra amarilla","maullin", "coquimbo", "nacimiento", "mejillones", "cabrero","pemuco", "papudo"),
adjacent_county2 = c("casablanca", "melipilla","vallenar", "dalcahue", "la serena", "renaico", "sierra gorda","quillon", "pinto", "la ligua"),
adjacent_county3 = c(NA,"paine", "la higuera", "quemchi", "vicuna", "collipulli","san pedro de atacama", "florida", "antuco", "nogales"),
adjacent_county4 = c(NA, "mostazal", "vicuna", NA, "rio hurtado","ercilla", "taltal", "hualqui", "tucapel", "puchuncavi"),
adjacent_county5 = c(NA, "graneros", NA, NA, NA, "los sauces","diego de almagro", "san rosendo", "los angeles", NA),
adjacent_county6 = c(NA,"rancagua", NA, NA, NA, "canete", NA, "laja", "cabrero",NA),
adjacent_county7 = c(NA, "donihue", NA, NA, NA, "puren",NA, "los angeles", NA, NA),
adjacent_county8 = c(NA, "coltauco",NA, NA, NA, "los alamos", NA, NA, NA, NA),
adjacent_county9 = c(NA,"las cabras", NA, NA, NA, "curanilahue", NA, NA, NA, NA),
adjacent_county10 = c(NA_character_, NA_character_, NA_character_,NA_character_, NA_character_, NA_character_, NA_character_,NA_character_, NA_character_, NA_character_),
adjacent_county11 = c(NA_character_,NA_character_, NA_character_, NA_character_, NA_character_,NA_character_, NA_character_, NA_character_, NA_character_,NA_character_)),
row.names = c(NA, -10L), class = c("tbl_df","tbl", "data.frame"))
例如,我有Algarrobo
2001 年的县,裁定 = 0。我需要将Algarrobo
出现在下一列中的所有 s 重新编码为 1,但仅限于 2001 年。数据框中的下一个县也是如此。我对这个问题非常复杂,因为我考虑了可能的解决方案,但是对于我必须做的所有可能的组合来说,它们非常不雅且有问题。例如:
data_test <- data_test %>% map_at(c("adjacent_county1", "adjacent_county2",
"adjacent_county3"), function(x) {recode(x, "algarrobo" = "0")}) %>% bind_rows()
而且,此外,我无法在这段代码中指定年份。
谢谢,
解决方案
推荐阅读
- spartacus-storefront - 斯巴达克斯头插槽不尊重配置
- sapui5 - 自定义控件中的工具栏
- bash - 如何使用 bash 脚本创建、解析和更新文件?可能吗?
- java - 使 JTable 单元格完全正方形
- java - if 语句嵌套在 for 循环中
- javascript - 将 Vuex 模块拆分为同一命名空间中的多个文件
- java - Java 11+ Tomcat 9+:动态添加库 JAR 以将它们放入 *every* webapp 类路径
- spartacus-storefront - 在哪里指定扩展“spartacussampledataaddon”的路径
- phoenix-framework - 从/在 Phoenix 框架中提供静态 html(和其他)
- c++ - 防止 boost::asio::io_context 在空投票调用时停止