首页 > 解决方案 > 在R中添加数据框的相应列

问题描述

这是我拥有的示例数据。

df1 <- tibble(a=1:4,
              b=1:4,
              c=1:4,
              d=1:4,
              e=1:4)

# A tibble: 4 x 5
      a     b     c     d     e
  <int> <int> <int> <int> <int>
1     1     1     1     1     1
2     2     2     2     2     2
3     3     3     3     3     3
4     4     4     4     4     4
df2 <- tibble(b=1:4,
              d=1:4,
              e=1:4)

      b     d     e
  <int> <int> <int>
1     1     1     1
2     2     2     2
3     3     3     3
4     4     4     4

我想添加共同的列,以便我可以获得这样的数据框

      a     b     c     d     e
  <int> <dbl> <int> <dbl> <dbl>
1     1     2     1     2     2
2     2     4     2     4     4
3     3     6     3     6     6
4     4     8     4     8     8

有没有一种简单的方法可以在 R 中使用类似的工具来做到这一点dplyr

标签: rdplyrdata-cleaningdata-wrangling

解决方案


一个更简单的选择是根据“df2”的列名对第一个数据集“df1”进行子集化(假设“df2”中的所有列都存在于“df1”中),将它们添加并分配回“df1”中的那些

df1[names(df2)] <- df1[names(df2)] + df2

或使用dplyr

library(dplyr)
df1 %>% 
    mutate(c_across(names(df2)) + df2)

-输出

# A tibble: 4 x 5
#      a     b     c     d     e
#  <int> <int> <int> <int> <int>
#1     1     2     1     2     2
#2     2     4     2     4     4
#3     3     6     3     6     6
#4     4     8     4     8     8

推荐阅读