r - 根据其他列上的某些条件,使用其他行中的值更新某些行中的值
问题描述
我有一个巨大的数据集,我想在其中的某些行(即具有)中的值与另一行(即具有)scenario=="D"
的同一列(即以其他列具有相同值为条件(即和)outcome
scenario=="C"
year
country
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"))
我将不胜感激任何帮助。
解决方案
您可以使用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
推荐阅读
- kubernetes - 如果已经存在,如何告诉 helm 不要创建/更改资源?
- android - 当用户尝试扫描 NFC 标签时,Android 10 显示 NFC 读取错误 toast
- javascript - 组件仅在第二次刷新时加载
- angular - 当从 mat-select 下拉列表中引发事件时,如何获取行中其他列的值?
- c++ - nirq:标志不匹配 irq 80. 00002083 (ledtrig-gpio) 与 00000083 (USER)
- python - 如何在 Python 中简单地导入文件夹?
- python - 使用熊猫的特定数据字段中的额外逗号
- excel - 如何指定顺序 Dir() 查看 vba 中的文件
- php - AJAX - 表单后刷新页面
- c# - GroupBy 来识别具有不同分数的项目以及它们被分配不同分数的次数