📌  相关文章
📜  将 R 中的两个 DataFrame 与不同的列组合在一起

📅  最后修改于: 2022-05-13 01:55:22.297000             🧑  作者: Mango

将 R 中的两个 DataFrame 与不同的列组合在一起

在本文中,我们将讨论如何在 R 编程语言中组合具有不同列的两个数据框。

方法一:使用plyr包

R 中的“plyr”包用于处理数据,包括其增强和操作。它可以通过以下命令加载并安装到工作空间中:

R 中的 rbind.fill() 方法是基础 R 中 rbind() 方法的增强,用于组合具有不同列的数据帧。输入数据框中的列名数字可能不同。相应数据帧的缺失列用 NA 填充。输出数据框仅包含一列,前提是该列存在于任何数据框中。

句法:



以下属性由 rbind.fill() 方法维护:

  • 数据帧按其在函数中的规范顺序附加。
  • 总列数相当于两个数据框的列数之和。
  • 总行数等于两个数据帧的行数之和。
  • 列的出现按照函数调用期间数据框参数声明的顺序。
  • 在缺失的列中创建空单元格。

例子:

R
# loading the required library
library("plyr")
  
# declaring first data frame
data_frame1 <- data.frame(col1 = c(2,4,6), 
                          col2 = c(4,6,8), 
                          col3 = c(8,10,12), 
                          col4 = LETTERS[1:3])
print ("First Dataframe")
print (data_frame1)
  
# declaring second data frame
data_frame2 <- data.frame(col4 = letters[1:4], 
                          col5 = TRUE)
print ("Second Dataframe")
print (data_frame2)
  
print ("Combining Dataframe")
  
# binding data frames
rbind.fill(data_frame1,data_frame2)


R
# loading the required library
library("dplyr")
  
# declaring first data frame
data_frame1 <- data.frame(col1 = c(2,4,6), 
                          col2 = c(4,6,8), 
                          col3 = c(8,10,12), 
                          col4 = c(20,16,14))
print ("First Dataframe")
print (data_frame1)
  
# declaring second data frame
data_frame2 <- data.frame(col5 = letters[1:4], 
                          col6 = TRUE)
print ("Second Dataframe")
print (data_frame2)
  
print ("Combining Dataframe")
  
# binding data frames
bind_rows(data_frame1,data_frame2)


R
# loading the required library
library("dplyr")
  
# declaring first data frame
data_frame1 <- data.frame(col1 = c(2,4,6), 
                          col2 = c(4,6,8), 
                          col3 = c(8,10,12), 
                          col4 = LETTERS[1:3])
print ("First Dataframe")
print (data_frame1)
  
# declaring second data frame
data_frame2 <- data.frame(col4 = letters[1:4], 
                          col5 = TRUE)
print ("Second Dataframe")
print (data_frame2)
  
print ("Combining Dataframe")
  
# binding data frames
bind_rows(data_frame1,data_frame2)


输出

[1] "First Dataframe"
col1 col2 col3 col4
1    2    4    8   A
2    4    6   10   B
3    6    8   12   C
[1] "Second Dataframe"
col4 col5
1    a TRUE
2    b TRUE
3    c TRUE
4    d TRUE
[1] "Combining Dataframe"
[1] "First Dataframe"
col1 col2 col3 col4
1    2    4    8   20
2    4    6   10   16
3    6    8   12   14
[1] "Second Dataframe"
col5 col6
1    a TRUE
2    b TRUE
3    c TRUE
4    d TRUE
[1] "Combining Dataframe"
col1 col2 col3 col4 col5
1    2    4    8   A  NA
2    4    6   10   B  NA
3    6    8   12   C  NA
4   NA   NA   NA   a  TRUE
5   NA   NA   NA   b  TRUE
6   NA   NA   NA   c  TRUE
7   NA   NA   NA   d  TRUE

方法二:使用dplyr包

R 中的“dplyr”包用于处理数据,包括其增强和操作。它可以通过以下命令加载并安装到工作空间中:

bind_rows() 方法用于组合具有不同列的数据框。输入数据框中的列名数字可能不同。相应数据帧的缺失列用 NA 填充。输出数据框仅包含一列,前提是该列存在于任何数据框中。



句法:

以下属性由 bind_rows() 方法维护:

  • 数据帧按其在函数中的规范顺序附加。
  • 总列数等于两个数据框的列数之和。
  • 总行数等于两个数据帧的行数之和。

例子:

电阻

# loading the required library
library("dplyr")
  
# declaring first data frame
data_frame1 <- data.frame(col1 = c(2,4,6), 
                          col2 = c(4,6,8), 
                          col3 = c(8,10,12), 
                          col4 = c(20,16,14))
print ("First Dataframe")
print (data_frame1)
  
# declaring second data frame
data_frame2 <- data.frame(col5 = letters[1:4], 
                          col6 = TRUE)
print ("Second Dataframe")
print (data_frame2)
  
print ("Combining Dataframe")
  
# binding data frames
bind_rows(data_frame1,data_frame2)

输出

[1] "First Dataframe" 
col1 col2 col3 col4 
1    2    4    8   20 
2    4    6   10   16 
3    6    8   12   14 
[1] "Second Dataframe" 
col5 col6 
1    a TRUE 
2    b TRUE
 3    c TRUE 
4    d TRUE 
[1] "Combining Dataframe" 
col1 col2 col3 col4 col5 col6 
1    2    4    8   20    NA 
2    4    6   10   16    NA 
3    6    8   12   14    NA 
4   NA   NA   NA   NA    a TRUE 
5   NA   NA   NA   NA    b TRUE 
6   NA   NA   NA   NA    c TRUE 
7   NA   NA   NA   NA    d TRUE

如果两个输入数据框中的任何列名称相同,则会遇到以下属性:

  • 两个数据帧中公共列的类应该相同,否则会遇到错误。
  • 在这种情况下,输出数据框中的总列数应等于总输入列减去相交列。

例子:

电阻

# loading the required library
library("dplyr")
  
# declaring first data frame
data_frame1 <- data.frame(col1 = c(2,4,6), 
                          col2 = c(4,6,8), 
                          col3 = c(8,10,12), 
                          col4 = LETTERS[1:3])
print ("First Dataframe")
print (data_frame1)
  
# declaring second data frame
data_frame2 <- data.frame(col4 = letters[1:4], 
                          col5 = TRUE)
print ("Second Dataframe")
print (data_frame2)
  
print ("Combining Dataframe")
  
# binding data frames
bind_rows(data_frame1,data_frame2)

输出

[1] "First Dataframe"
col1 col2 col3 col4
1    2    4    8   A
2    4    6   10   B
3    6    8   12   C
[1] "Second Dataframe"
col4 col5
1    a TRUE
2    b TRUE
3    c TRUE
4    d TRUE
[1] "Combining Dataframe"
[1] "First Dataframe" 
col1 col2 col3 col4 
1    2    4    8   20 
2    4    6   10   16 
3    6    8   12   14 
[1] "Second Dataframe" 
col5 col6 
1    a TRUE 
2    b TRUE
 3    c TRUE 
4    d TRUE 
[1] "Combining Dataframe" 
col1 col2 col3 col4 col5 
1    2    4    8   A  NA 
2    4    6   10   B  NA 
3    6    8   12   C  NA 
4   NA   NA   NA   a  TRUE 
5   NA   NA   NA   b  TRUE 
6   NA   NA   NA   c  TRUE 
7   NA   NA   NA   d  TRUE