首页 > 解决方案 > 根据其他列上的某些条件,使用其他行中的值更新某些行中的值

问题描述

我有一个巨大的数据集,我想在其中的某些行(即具有)中的值与另一行(即具有)scenario=="D"的同一列(即以其他列具有相同值为条件(即和)outcomescenario=="C"yearcountry

df <- data.frame(year=c("2000", "2000", "2001", "2001"),
                 country=c("A", "A", "B", "B"),
                 scenario=c("C", "D", "C", "D"),
                 outcome=c("1", "2", "3", "4"))

我想生成这个:

df2 <- data.frame(year=c("2000", "2000", "2001", "2001"),
                 country=c("A", "A", "B", "B"),
                 scenario=c("C", "D", "C", "D"),
                 outcome=c("1", "1", "3", "3"))

我将不胜感激任何帮助。

标签: rconditional-statements

解决方案


您可以使用replace有条件地替换每组year和的值country

library(dplyr)

df %>%
  group_by(year, country) %>%
  mutate(outcome = replace(outcome, scenario == 'D', 
                           outcome[match('C', scenario)])) %>%
  ungroup

#   year  country scenario outcome
#  <chr> <chr>   <chr>    <chr>  
#1 2000  A       C        1      
#2 2000  A       D        1      
#3 2001  B       C        3      
#4 2001  B       D        3       

推荐阅读