在 R 中合併具有不同行數的兩個資料幀
    
    Jinku Hu
    2023年1月30日
    
    R
    R Data Frame
    
 
本文將演示在 R 中合併具有不同行數的兩個資料幀的多種方法。
使用 full_join 函式合併兩個不同行數的 R 資料幀
    
full_join 是 dplyr 包的一部分,它可用於合併具有不同行數的兩個資料幀。該函式將要合併的資料幀作為前兩個引數,並返回與第一個引數相同型別的物件。此函式可以對資料幀擴充套件型別(如 tibble 或惰性資料幀)進行操作。full_join 從兩個資料框引數中提取所有行和列。當沒有匹配的值時,它用 NA-s 填充元素。
library(dplyr)
v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
df1 <- data.frame(v1, v2)
v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))
df2 <- data.frame(v1, v2, wday)
dff <- df1 %>% full_join(df2)
dff
   v1  v2 wday
1  1.1  11 <NA>
2  1.2  12 <NA>
3  1.3  13 <NA>
4  2.1  21 <NA>
5  2.2  22 <NA>
6  2.3  23 <NA>
7  9.1 101  Wed
8  9.2 102  Thu
9  9.3 103  Mon
10 9.1 201  Wed
11 9.2 202  Thu
12 9.3 203  Fri
13 9.3 204  Mon
14 9.2 403  Tue
15 9.1 404  Wed
使用 left_join 函式合併兩個不同行數的 R 資料幀
left_join 是 dplyr 包中的另一種方法。它採用類似於 full_join 函式的引數,但 left_join 從第一個資料框中提取所有行,並從它們兩個中提取所有列。
library(dplyr)
v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
df1 <- data.frame(v1, v2)
v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))
df2 <- data.frame(v1, v2, wday)
dfl <- df1 %>% left_join(df2)
dfl
輸出:
  v1 v2 wday
1 1.1 11 <NA>
2 1.2 12 <NA>
3 1.3 13 <NA>
4 2.1 21 <NA>
5 2.2 22 <NA>
6 2.3 23 <NA>
使用 right_join 函式合併兩個不同行數的 R 資料幀
right_join 的工作方式類似於 left_join 函式,除了從第二個資料幀引數而不是第一個引數中提取所有行。該函式還將兩個資料框中的所有列複製到新構造的物件中。
library(dplyr)
v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
df1 <- data.frame(v1, v2)
v1 <- c(9.1, 9.2, 9.3, 9.1, 9.2, 9.3, 9.3, 9.2, 9.1)
v2 <- c(101, 102, 103, 201, 202, 203, 204, 403, 404)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri", "Mon", "Tue", "Wed"))
df2 <- data.frame(v1, v2, wday)
dfr <- df1 %>% right_join(df2)
dfr
輸出:
  v1  v2 wday
1 9.1 101  Wed
2 9.2 102  Thu
3 9.3 103  Mon
4 9.1 201  Wed
5 9.2 202  Thu
6 9.3 203  Fri
7 9.3 204  Mon
8 9.2 403  Tue
9 9.1 404  Wed
        Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
    
作者: Jinku Hu
    
