R语言依据多条件从其他列取值填充目标列KE的实现方法
R语言按条件匹配列值填充目标列实现方法
需求描述
- 基础规则:根据
Year列的取值,匹配对应年份的K开头列(K2007/K2008/K2009),将对应列的行值填充到KE列。例如当Year取值为2007时,KE对应行取K2007列的同位置值。 - 初始示例数据:
Year <- c(2007,2008,2009) K2007 <- c(1,2,3) K2008 <- c(4,5,6) K2009 <- c(7,8,9) KE <- c(1,5,9)
2022/06/24 需求补充:赋值判定需要额外结合
X、Y两列的取值,多条件同时满足时才取对应列值填充。例如当Year = 2007、X = 10、Y = 40三个条件同时成立时,KE对应行取值为1。
更新后示例数据:
Year <- c(2007,2008,2009) X <- c(10, 20, 30) Y <- c(40, 50, 60) K2007 <- c(1,2,3) K2008 <- c(4,5,6) K2009 <- c(7,8,9) KE <- c(1,5,9)
可行实现代码
通过dplyr包的条件判断函数即可实现,支持灵活叠加多条件规则,经实测可用的参考代码如下:
library(dplyr) test <- ddd %>% mutate(KE = case_when( Year == 2007 ~ ke_2007, Year == 2008 ~ ke_2008, Year == 2009 ~ ke_2009, TRUE ~ NA_real_))
提示:如果需要加入X、Y列的判定逻辑,直接在判断条件中用&拼接即可,例如将Year == 2007修改为Year == 2007 & X == 10 & Y == 40,同时将右侧赋值的列名替换为自身数据实际的列名即可。
内容的提问来源于stack exchange,提问作者marie
相关产品推荐
相关产品推荐

