根据R中其他2列的值减去一个特定值

时间:2019-10-24 04:56:24

标签: r

我有数据框(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

抱歉,这是我的第一篇文章,还没有完全提到。但是希望你能理解我的观点。

2 个答案:

答案 0 :(得分:0)

您可以通过这样做获得2018年美国的人均GDP

ismember

然后您提供的代码应该可以使用

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

答案 1 :(得分:0)

您可以使用向量并将其直接分配给表

GDPPerCap$USA_Difference <- as.numeric(paste(GDPPerCap$GDPperCapita))-as.numeric(paste(GDPPerCap[GDPPerCap$Year=="2018" & GDPPerCap$Country.Code =="USA",3]))