如果不是所有列都存在于R中的所有数据帧中,则按列合并数据帧

心电图

这与这篇文章有关,通过公共列在R中导入所选列合并dfs

dataframes当不是所有人都data frames具有相同的列/观察项时,我想按df列合并不同项,如果它们在所有情况下都不通用,则改为显示0。

我的数据集:

df <- data.frame(names=c("Obs1", "Obs2", "Obs3", "Obs4", "Obs5"), `S1`=c(1,2,2,0,1), `S2`=c(2,50,40,30,22), `S3`=c( 0,100,135,256,303), `S4`=c(0,10,17,73,74),check.names=FALSE)
df2<- data.frame(names=c("Obs1",  "Obs3", "Obs4", "Obs5"), `S1`=c(0,30,40,2), `S2`=c(2,5,6,7))
df3<- data.frame(names=c("Obs1", "Obs2", "Obs3", "Obs4", "Obs5"), `S1`=c(100,300,300,400,200), `S2`=c(3,5,7,8,7))
df4<- data.frame(names=c("Obs1", "Obs2", "Obs3","Obs6"), `S1`=c(110,310,310,210), `S2`=c(30,50,70,70))

我想要的输出:

当我运行此命令时,它仅在所有数据框中使用公共列名/观察值,而忽略某些(但不是全部)中的公共列名/观察值。

dff <- df %>% inner_join(df2 %>% select(names, 'S1_df2' = S1)) %>% 
          inner_join(df3 %>% select(names, 'S1_df3' = S1)) %>% 
          inner_join(df4 %>% select(names, 'S1_df4' = S1))

dff
    
  names S1  S2  S3  S4  S1_df2 S1_df3 S1_df4
1 Obs1  1   2   0   0   0      100    110 
2 Obs3  2   40  135 17  30     300    310

所需的输出改为:

names   S1  S2  S3   S4  S1_df2 S1_df3 S1_df4
1 Obs1  1   2   0    0   0      100    110 
2 Obs2  2   50  100  10  0      300    310  # this Obs is not present in df2, therefore add 0
3 Obs3  2   40  135  17  30     300    310
4 Obs4  0   30  256  73  40     400    0    # this Obs is not present in df4, therefore add 0
5 Obs5  1   22  303  74  2      200    0    # this Obs is not present in df4, therefore add 0
6 Obs6  0   0   0    0   0      0      210  # this Obs is not present in df1,2,3,therefore add 0

阿克伦

我们可以改变inner_joinfull_join,然后replaceNA0

library(dplyr)
library(tidyr)
df %>%
       full_join(df2 %>% 
                   select(names, 'S1_df2' = S1)) %>% 
       full_join(df3 %>% 
                   select(names, 'S1_df3' = S1)) %>% 
        full_join(df4 %>% 
                  select(names, 'S1_df4' = S1)) %>%    
        mutate(across(S1:S1_df4, replace_na, 0))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果来自一列的数据存在于另一列中,则合并两个数据帧

选择所有数组值都存在于另一列中的所有行

在R中按列和组组合数据帧中的所有数据

获取基于数据帧列中特定值的所有数据帧

如何合并所有数据帧具有相同索引列的多个 pyspark 数据帧?

查看一个数据帧行中的所有值是否存在于另一个数据帧中

R:根据列中的值合并两个数据帧,并返回两个数据帧的所有值

循环查看 R 中的所有数据帧

是否可以将R中的多个数据帧合并为一个数据,其中所有列的键都相同

创建 R 中数据帧中所有列的所有值的向量

如何报告 Pandas 数据帧的所有数据中是否存在坏字符?

所有3个数据帧的A列中存在的A列的vlookup

如果熊猫数据帧列中的值存在于另一个数据帧中,则更新它们

如果该表的适当 ID 存在于另一个表中,我想对特定表列中的所有数据求和

filter()或subset()列表中存储的所有数据帧

如何在Python中将Spark数据帧中的所有列值合并为String?

如何删除R中数据帧中没有内容的所有变量/列?

在一个数据帧中拆分所有列,并在R中创建两个数据帧

如何使用pandas在数据帧python中编码几列(但不是所有列)

如何基于R中的另一个数据帧重命名数据帧的所有列?

R,X的所有元素是否都存在于Y中

Python 数据帧:所有数据帧中的每行操作

逐行添加数据帧以保留R中的所有列

如何将数据帧的所有列转换为 R 中的单个列表?

求和 R 数据帧中某个特定的所有数字

将符号%添加到R中的所有数据帧

R - 如何根据条件向量对存储在列表中的所有数据帧进行子集

如何创建循环以“取消计数” R环境中的所有数据帧?

是否有用于使用现有数据帧中的两列创建新数据帧的 R 函数?