欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語言中rbind() 與 merge() 的區(qū)別與應(yīng)用場景

 更新時(shí)間:2025年08月25日 09:13:17   作者:煙鎖池塘柳0  
R語言中rbind()與merge()區(qū)別:rbind按行拼接,要求列結(jié)構(gòu)一致;merge按鍵(如ID)合并,類似SQL JOIN,允許不同結(jié)構(gòu),前者用于縱向疊加數(shù)據(jù),后者用于根據(jù)鍵列關(guān)聯(lián)數(shù)據(jù),適用于不同場景的數(shù)據(jù)整合需求,感興趣的朋友跟隨小編一起看看吧

R語言中rbind()與merge()的區(qū)別詳解

在R語言中,對兩個(gè)數(shù)據(jù)框(data.frame)進(jìn)行合并操作的常用函數(shù)有 rbind()merge(),但它們的用途和邏輯完全不同。本文就來詳細(xì)介紹一下這兩個(gè)函數(shù)的區(qū)別與應(yīng)用場景。

1rbind()—— 按行拼接

1.1 基本功能

  • 作用:把兩個(gè)數(shù)據(jù)框按照“行”的維度進(jìn)行拼接(row bind),也就是增加數(shù)據(jù)的“條數(shù)”,但是每個(gè)數(shù)據(jù)的“屬性”不變化。
  • 要求:兩個(gè)數(shù)據(jù)框必須具有 相同的列名相同的列數(shù),否則會(huì)報(bào)錯(cuò)或強(qiáng)制補(bǔ) NA。
  • 常見用途:當(dāng)兩個(gè)數(shù)據(jù)框結(jié)構(gòu)相同,只是觀測值不同,需要縱向疊加時(shí)。

1.2 示例

df1 <- data.frame(id = 1:3, value = c("A", "B", "C"))
df2 <- data.frame(id = 4:5, value = c("D", "E"))
rbind(df1, df2)

結(jié)果:

  id value
1  1     A
2  2     B
3  3     C
4  4     D
5  5     E

?? df2 的數(shù)據(jù)被直接拼接在 df1 的下面。

2merge()—— 按鍵合并

2.1 基本功能

  • 作用:根據(jù)一個(gè)或多個(gè)鍵列(key),把兩個(gè)數(shù)據(jù)框進(jìn)行 數(shù)據(jù)庫式的合并,非常類似 SQL 的 JOIN,或者GIS中的表連接。
  • 參數(shù)
    • by:指定鍵列。如果不寫,默認(rèn)使用兩個(gè)數(shù)據(jù)框中同名的列。
    • all、all.xall.y:控制是否保留不匹配的行,類似 SQL 中的全連接、左連接、右連接。

all:邏輯值,all = L 是 all.x = L 和 all.y = L 的簡寫,L 可以是 TRUE 或 FALSE。
all.x:邏輯值,默認(rèn)為 FALSE。如果為 TRUE, 顯示 x 中匹配的行,即便 y 中沒有對應(yīng)匹配的行,y 中沒有匹配的行用 NA 來表示。
all.y:邏輯值,默認(rèn)為 FALSE。如果為 TRUE, 顯示 y 中匹配的行,即便 x 中沒有對應(yīng)匹配的行,x 中沒有匹配的行用 NA 來表示。

2.2 示例

df1 <- data.frame(id = 1:3, score = c(90, 85, 88))
df2 <- data.frame(id = c(2, 3, 4), name = c("Tom", "Jerry", "Lucy"))
merge(df1, df2, by = "id", all = TRUE)

結(jié)果:

  id score  name
1  1    90  <NA>
2  2    85   Tom
3  3    88 Jerry
4  4  <NA>  Lucy

?? 可以看到,id 相同的行被合并到一起,不匹配的地方用 NA 填充。

3 詳細(xì)解釋 merge() 函數(shù)和 SQL 的 JOIN 功能的相似性

(此處參考:R 數(shù)據(jù)重塑 | 菜鳥教程 。)

merge() 設(shè)置SQL 等價(jià)保留哪些行
默認(rèn)(all = FALSEINNER JOIN僅鍵匹配成功的行
all.x = TRUELEFT JOIN左表全部 + 右表匹配,不匹配右側(cè)補(bǔ) NA
all.y = TRUERIGHT JOIN右表全部 + 左表匹配,不匹配左側(cè)補(bǔ) NA
all = TRUEall.x=TRUE & all.y=TRUEFULL OUTER JOIN兩表全部,任何一側(cè)不匹配的用對側(cè)列 NA 補(bǔ)齊

3.1 示例與結(jié)果對照

x <- data.frame(id = 1:3, score = c(90, 85, 88))
y <- data.frame(id = c(2, 3, 4), name = c("Tom", "Jerry", "Lucy"))
3.1.1 內(nèi)連接(默認(rèn))—— 只要公共部分
merge(x, y, by = "id")
  id score  name
1  2    85   Tom
2  3    88 Jerry
3.1.2 左連接 —— 保留 x 的所有行
merge(x, y, by = "id", all.x = TRUE)
  id score  name
1  1    90  <NA>   # y 中沒有 id=1,用 NA 補(bǔ)
2  2    85   Tom
3  3    88 Jerry
3.1.3 右連接 —— 保留 y 的所有行
merge(x, y, by = "id", all.y = TRUE)
  id score  name
1  2    85   Tom
2  3    88 Jerry
3  4  <NA>  Lucy   # x 中沒有 id=4,用 NA 補(bǔ)
3.1.4 全連接 —— 兩邊都不丟
merge(x, y, by = "id", all = TRUE)
# 同等寫法:merge(x, y, by = "id", all.x = TRUE, all.y = TRUE)
  id score  name
1  1    90  <NA>
2  2    85   Tom
3  3    88 Jerry
4  4  <NA>  Lucy

3.2 幾個(gè)實(shí)用細(xì)節(jié)(容易忽略)

  • 鍵列的指定
    • by = "id":兩表鍵列同名。
    • by.x = "key_in_x", by.y = "key_in_y":兩表鍵列不同名時(shí)這樣寫。
    • 可以是多個(gè)鍵by = c("id", "date")
  • 重復(fù)鍵會(huì)產(chǎn)生“乘法效應(yīng)”
    • 如果兩邊同一個(gè)鍵各有多行,merge() 會(huì)做笛卡爾匹配(m×n 行)。這是預(yù)期行為,非 Bug。
    • 必要時(shí)先 unique() 去重或在鍵上匯總。
  • 排序
    • 默認(rèn) sort = TRUE,結(jié)果會(huì)按鍵列排序;
    • 要盡量保持原表順序(尤其左連接),用 sort = FALSE
merge(x, y, by = "id", all.x = TRUE, sort = FALSE)
  • 同名非鍵列的沖突
    • 兩表中鍵以外有同名列,merge() 會(huì)保留兩列,并自動(dòng)加后綴:
    • suffixes = c(".x", ".y")(可自定義)。
  • 缺失值匹配
    • 默認(rèn) NA 不參與匹配;可用 incomparables = NA 阻止某些值匹配(較少用)。

4rbind()vsmerge()核心區(qū)別

函數(shù)合并方式要求/特點(diǎn)適用場景
rbind()直接拼行(縱向疊加)兩個(gè)數(shù)據(jù)框必須有相同的列名和結(jié)構(gòu)數(shù)據(jù)框結(jié)構(gòu)完全相同,只是增加觀測值
merge()按鍵匹配合并(類似 SQL JOIN根據(jù)某些列進(jìn)行匹配,不要求列結(jié)構(gòu)相同兩個(gè)數(shù)據(jù)框包含不同的變量,需要根據(jù)鍵對齊

5 總結(jié)

  • 如果你的數(shù)據(jù)框結(jié)構(gòu)一致,只是想簡單地“上下拼接”,用 rbind()
  • 如果你需要根據(jù)某些列進(jìn)行類似數(shù)據(jù)庫表的連接,merge()。

掌握這兩個(gè)函數(shù)的區(qū)別,有助于在數(shù)據(jù)預(yù)處理階段更高效地完成任務(wù)。

?? 推薦用法選擇

  • rbind() 更適合批量讀取多個(gè)同結(jié)構(gòu)數(shù)據(jù)(比如多個(gè) Excel sheet)。
  • merge() 更適合數(shù)據(jù)關(guān)聯(lián)(比如學(xué)生成績表和學(xué)生信息表的合并)。

到此這篇關(guān)于R語言中rbind() 與 merge() 的區(qū)別詳解的文章就介紹到這了,更多相關(guān)R語言 rbind() 與 merge() 區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • R語言編程數(shù)學(xué)分析重讀微積分理解極限算法

    R語言編程數(shù)學(xué)分析重讀微積分理解極限算法

    這篇文章主要為大家介紹了R語言編程重讀微積分?jǐn)?shù)學(xué)分析理解極限算法的詳細(xì)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • R語言是什么 R語言簡介

    R語言是什么 R語言簡介

    R是用于統(tǒng)計(jì)分析、繪圖的語言和操作環(huán)境。R是屬于GNU系統(tǒng)的一個(gè)自由、免費(fèi)、開源的軟件,它是一個(gè)用于統(tǒng)計(jì)計(jì)算和統(tǒng)計(jì)制圖的優(yōu)秀工具
    2021-03-03
  • R語言數(shù)組實(shí)例用法及知識點(diǎn)總結(jié)

    R語言數(shù)組實(shí)例用法及知識點(diǎn)總結(jié)

    在本文里,我們給大家整理的是關(guān)于R語言數(shù)組的相關(guān)知識點(diǎn),有興趣的朋友們可以跟著學(xué)習(xí)參考下。
    2021-04-04
  • R語言中rbind() 與 merge() 的區(qū)別與應(yīng)用場景

    R語言中rbind() 與 merge() 的區(qū)別與應(yīng)用場景

    R語言中rbind()與merge()區(qū)別:rbind按行拼接,要求列結(jié)構(gòu)一致;merge按鍵(如ID)合并,類似SQL JOIN,允許不同結(jié)構(gòu),前者用于縱向疊加數(shù)據(jù),后者用于根據(jù)鍵列關(guān)聯(lián)數(shù)據(jù),適用于不同場景的數(shù)據(jù)整合需求,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • 使用R語言實(shí)現(xiàn)自動(dòng)文摘的方法

    使用R語言實(shí)現(xiàn)自動(dòng)文摘的方法

    本文介紹了如何使用R語言實(shí)現(xiàn)自動(dòng)文摘,我們首先介紹了基于詞頻-逆文檔頻率(TF-IDF)的自動(dòng)文摘方法,包括創(chuàng)建詞項(xiàng)文檔矩陣,計(jì)算TF-IDF值,提取關(guān)鍵詞,以及根據(jù)關(guān)鍵詞生成摘要,需要的朋友一起學(xué)習(xí)下吧
    2023-05-05
  • R語言列篩選的方法select實(shí)例詳解

    R語言列篩選的方法select實(shí)例詳解

    對于大數(shù)據(jù),linux和python是很好的處理工具,但是對于這兩個(gè)語言不熟悉的盆友來說,R語言是非常好的替代工具,下面這篇文章主要給大家介紹了關(guān)于R語言列篩選的法select的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • R語言中向量和矩陣簡單運(yùn)算的實(shí)現(xiàn)

    R語言中向量和矩陣簡單運(yùn)算的實(shí)現(xiàn)

    這篇文章主要介紹了R語言中向量和矩陣簡單運(yùn)算的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • R語言-如何截取變量中指定位置的若干個(gè)字符

    R語言-如何截取變量中指定位置的若干個(gè)字符

    這篇文章主要介紹了R語言截取變量中指定位置的若干個(gè)字符,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言對CSV文件操作實(shí)例講解

    R語言對CSV文件操作實(shí)例講解

    在本篇文章里小編給大家整理了一篇關(guān)于R語言對CSV文件操作實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • vscode配置R語言debugger環(huán)境:'vscDebugger"的安裝方法

    vscode配置R語言debugger環(huán)境:'vscDebugger"的安裝方法

    在R中安裝vscDebugger包可以通過兩種方法:第一種是使用Visual Studio Code的命令面板自動(dòng)安裝,操作簡便,第二種是手動(dòng)在R控制臺(tái)中安裝,這兩種方法都可以有效地安裝vscDebugger包,進(jìn)而幫助用戶在R語言中進(jìn)行代碼調(diào)試,更多詳細(xì)步驟和信息可以參考相關(guān)教程或文章
    2024-10-10

最新評論