首页 > 解决方案 > 使用 dplyr 从一个变量中减去第二个变量的值

问题描述

我有时间相关的数据,其中包括“年份”作为一列,并且是数据的年份。我有第二个变量,每年一个值,当年份相同时,我想从第一个变量中减去它。

library(dplyr)

a1 = data.frame(year = 2000:2005, y=0:5)
b1 = data.frame(year = 2000:2005, y=0:5)
ab = rbind(a1,b1)

c1 = data.frame(year = 2000:2005, x = 10:15)

# my best attempt - does not work
result <- ab %>% group_by(year) %>% mutate(diff = year - c1[year])

我期望结果有一个条目,年份 = 2000,y = 0,新列 diff = -10。

但是,似乎无法使用 dplyr 完成这项工作。

这如何使用 dplyr 来完成?

标签: rdplyr

解决方案


a1和b1有区别吗?它们看起来一样。

这个怎么样?

d <- left_join(ab, c1, by = "year") %>% 
  mutate(diff = y-x)

给我这个,这似乎解决了你的问题。

   year y  x diff
1  2000 0 10  -10
2  2001 1 11  -10
3  2002 2 12  -10
4  2003 3 13  -10
5  2004 4 14  -10
6  2005 5 15  -10
7  2000 0 10  -10
8  2001 1 11  -10
9  2002 2 12  -10
10 2003 3 13  -10
11 2004 4 14  -10
12 2005 5 15  -10

推荐阅读