【发布时间】:2021-07-19 14:07:19
【问题描述】:
对于我正在尝试做的事情,我还没有找到确切的答案。我经常要减去两个数据框,每个数据框都包含一个“名称”列。示例:
df1 <- data.frame(name = c("name1","name2","name3","name4"),
month1 = c(5,6,7,8),
month2 = c(10,11,12,13),
month3 = c(15,16,17,18))
df2 <- data.frame(name = c("name1","name2","name3","name4"),
month1 = c(22,23,24,25),
month2 = c(31,34,35,39),
month3 = c(42,43,45,46))
我非常想做的是有一个 df3,它是 df2 - df1 的减法,但保留名称列:
df3 <- df1 %>%
select("name")
temp <- df2[,-c(1)] - df1[,-c(1)]
df3 <- bind_cols(df3,temp)
print(df3)
name month1 month2 month3
1 name1 17 21 27
2 name2 17 23 27
3 name3 17 23 28
4 name4 17 26 28
现在,只有短短的三行代码。但是,是否没有“单行”函数可以在指定保留“名称”列的同时减去数据帧。它本质上与 df2[,-c(1)] - df1[,-c(1)] 的作用相同,但会立即重新添加“名称”列,而不是拆分数据框。这可能吗?
【问题讨论】: