R の行数が異なる 2つのデータフレームをマージする
胡金庫
2023年1月30日
-
full_join
関数を使用して、行数が異なる 2つの R データフレームをマージする -
left_join
関数を使用して、行数が異なる 2つの R データフレームをマージする -
right_join
関数を使用して、行数が異なる 2つの R データフレームをマージする
この記事では、R の行数が異なる 2つのデータフレームをマージする複数の方法を示します。
full_join
関数を使用して、行数が異なる 2つの R データフレームをマージする
full_join
は dplyr
パッケージの一部であり、行数が異なる 2つのデータフレームをマージするために使用できます。この関数は、マージされるデータフレームを最初の 2つの引数として受け取り、最初の引数と同じタイプのオブジェクトを返します。この関数は、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
関数を使用して、行数が異なる 2つの 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
関数を使用して、行数が異なる 2つの R データフレームをマージする
right_join
は、最初のデータフレーム引数ではなく 2 番目のデータフレーム引数からすべての行を抽出することを除いて、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
著者: 胡金庫