首页 > 解决方案 > 根据 R 中其他 2 列的值减去特定值

问题描述

我有数据框(GDPPerCap),其中包含 Year、Country.Code 和 GDPperCapita 的列。例如:

Year     Country.Code     GDPperCapita
1960     AUS              15,000
1960     USA              20,000
1960     ARG              8,000
.
.
.
2018     USA              60,000

我想为特定国家(例如美国)设置一个新列,使该值等于该行的 GDPPerCapita 变量,减去 2018 年美国的 GDPperCapita。(最终我想设置一个循环,所以它为每个不同的国家代码创建了一个类似的列。

我尝试过使用 mutate:

GDPPerCap <- GDPPerCap %>% 

mutate(USA_Difference = GDPperCapita - GDPperCapita[Country.Code == "USA", Year == "2018"])

我希望它实现:

Year     Country.Code     GDPperCapita   USA_Difference
1960     AUS              15,000         -45,000
1960     USA              20,000         -40,000
1960     ARG              8,000          -52,000
.
.
.
2018     USA              60,000          0

抱歉,这是我的第一篇文章,还没有完全确定。但希望你明白我的意思。

标签: r

解决方案


您可以通过以下方式获得 2018 年美国的人均 GDP

USA2018 <- GDPPerCap %>% filter(Country.Code=="USA",Year == 2018) %>% pull(GDPperCapita)

# Note: if Year is in character format you might have to do Year == "2018" instead

那么您提供的代码应该可以工作

GDPPerCap <- GDPPerCap %>% 
                       mutate(USA_Difference = GDPperCapita - USA2018)

推荐阅读