日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R实现一次性合并多个数据框

發布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R实现一次性合并多个数据框 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據處理中經常會有這樣的情況,需要合并多個數據(按行或者按列合并),常規的merge或者rbind只能兩個兩個合并,操作繁瑣。可以使用自寫函數或do.call()函數進行數據庫的拼接或合并,具體操作如下:

按列合并

mypath<-"C:/Users/18896/Desktop/example1"multmerge = function(mypath){filenames=list.files(path=mypath, pattern = ".XPT",full.names=TRUE)datalist = lapply(filenames, function(x){read.xport(file=x)})Reduce(function(x,y) {merge(x,y,by="SEQN",all=T)}, datalist) }mergedata<-multmerge(mypath)

mypath中為需要合并的所有文件夾的本地目錄,定義函數multmerge,先列出需要合并的數據庫名稱,并讀取為list,使用merge函數合并list中的數據框。最后生成的mergedata為合并之后的data

文件夾不在本地時

data1 <- data.frame(id = 1:6, # Create first example data framex1 = c(5, 1, 4, 9, 1, 2),x2 = c("A", "Y", "G", "F", "G", "Y"))data2 <- data.frame(id = 4:9, # Create second example data framey1 = c(3, 3, 4, 1, 2, 9),y2 = c("a", "x", "a", "x", "a", "x"))data3 <- data.frame(id = 5:6, # Create third example data framez1 = c(3, 2),z2 = c("K", "b"))data_list <- list(data1, data2, data3)my_merge <- function(df1, df2){ # Create own merging functionmerge(df1, df2, by = "id") }Reduce(my_merge, data_list) #id x1 x2 y1 y2 z1 z2 #1 5 1 G 3 x 3 K #2 6 2 Y 4 a 2 b

或者使用tidyverse包

install.packages("tidyverse") # Install tidyverse package library("tidyverse") data_list %>% reduce(inner_join, by = "id") # Apply reduce function of tidyverse#id x1 x2 y1 y2 z1 z2 #1 5 1 G 3 x 3 K #2 6 2 Y 4 a 2 b

按行合并

library(data.table) DT1 = data.table(A=1:3,B=letters[1:3]) DT2 = data.table(B=letters[4:5],A=4:5) DT3=data.table(A=6:7,B=letters[6:7]) l = list(DT1,DT2,DT3) rbindlist(l, use.names=TRUE) #A B #1: 1 a #2: 2 b #3: 3 c #4: 4 d #5: 5 e #6: 6 f #7: 7 g

重復合并某個數據框多次

? do.call("rbind", replicate(4, DT1, simplify = FALSE))?# A B # 1: 1 a # 2: 2 b # 3: 3 c # 4: 1 a # 5: 2 b # 6: 3 c # 7: 1 a # 8: 2 b # 9: 3 c #10: 1 a #11: 2 b #12: 3 c

Reference:R Merge Multiple Data Frames in List (2 Examples) | Base R vs. tidyverse (statisticsglobe.com)

總結

以上是生活随笔為你收集整理的R实现一次性合并多个数据框的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。