溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

R語(yǔ)言中如何合并dplyr

發(fā)布時(shí)間:2022-03-21 09:50:42 來(lái)源:億速云 閱讀:432 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“R語(yǔ)言中如何合并dplyr”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1、轉(zhuǎn)換與合并

left_join(a, b, by = “x1”): 向數(shù)據(jù)集a中加入匹配的數(shù)據(jù)集b記錄(行)。

right_join(a, b, by = “x1”): 向數(shù)據(jù)集b中加入匹配的數(shù)據(jù)集a記錄。

inner_join(a, b, by = “x1”): 合并數(shù)據(jù)。僅保留匹配的記錄。

full_join(a, b, by = “x1”): 合并數(shù)據(jù)。保留所有記錄,所有行。沒(méi)有的用NA填充

library(dplyr)
a=data.frame(x1=c("A","B","C"),x2=c(1:3))
b=data.frame(x1=c("A","B","D"),x3=c("T","F","T"))
a;b
##   x1 x2## 1  A  1## 2  B  2## 3  C  3
##   x1 x3## 1  A  T## 2  B  F## 3  D  T
left_join(a, b, by = "x1")# 向數(shù)據(jù)集a中加入匹配的數(shù)據(jù)集b記錄。
##   x1 x2   x3## 1  A  1    T## 2  B  2    F## 3  C  3 <NA>
right_join(a, b, by = "x1")#    向數(shù)據(jù)集b中加入匹配的數(shù)據(jù)集a記錄。
##   x1 x2 x3## 1  A  1  T## 2  B  2  F## 3  D NA  T
inner_join(a, b, by = "x1")#    合并數(shù)據(jù)。僅保留匹配的記錄。
##   x1 x2 x3## 1  A  1  T## 2  B  2  F
full_join(a, b, by = "x1")# 合并數(shù)據(jù)。保留所有記錄,所有行,沒(méi)有的用NA填充
##   x1 x2   x3## 1  A  1    T## 2  B  2    F## 3  C  3 <NA>## 4  D NA    T

2、篩選與合并

semi_join(a, b, by = “x1”): 數(shù)據(jù)集a中能與數(shù)據(jù)集b匹配的記錄。

anti_join(a, b, by = “x1”): 數(shù)據(jù)集a中與數(shù)據(jù)集b不匹配的記錄

3、集合操作

intersect(x, y): 均出現(xiàn)在數(shù)據(jù)集x和y中的記錄。xy交集

union(x, y): 出現(xiàn)在數(shù)據(jù)集x或y中的記錄。 xy并集

setdiff(x, y): 僅出現(xiàn)在數(shù)據(jù)集x而不在y中的記錄。x與y的差集

bind_rows(x, y): 把數(shù)據(jù)集y作為新的?行添加到x中。

bind_cols(x, y): 把數(shù)據(jù)集y作為新的列添加到x中。

  • 注意:數(shù)據(jù)按所在位置匹配。

  • 和rbind() 與cbind()不一樣的是,rbind()/cbind()對(duì)數(shù)據(jù)合并有嚴(yán)格的要求

x=data.frame(A=c("a","b","c"),B=c("t","u","v"),C=c(1:3))
y=data.frame(A=c("a","b","d"),B=c("t","u","v"),D=c(2:4))
x;y
##   A B C## 1 a t 1## 2 b u 2## 3 c v 3
##   A B D## 1 a t 2## 2 b u 3## 3 d v 4
bind_rows(x, y) #行合并,列全部顯示,沒(méi)有的用NA填充 ,選擇.id="name"參數(shù),多增加一列,列名name
##   A B  C  D## 1 a t  1 NA## 2 b u  2 NA## 3 c v  3 NA## 4 a t NA  2## 5 b u NA  3## 6 d v NA  4
bind_rows(x, y,.id="name")# 為了區(qū)別數(shù)據(jù)是分別來(lái)自于兩個(gè)其他數(shù)據(jù)庫(kù),可以用id進(jìn)行區(qū)別
##   name A B  C  D## 1    1 a t  1 NA## 2    1 b u  2 NA## 3    1 c v  3 NA## 4    2 a t NA  2## 5    2 b u NA  3## 6    2 d v NA  4
bind_cols(x, y) #列合并,
##   A...1 B...2 C A...4 B...5 D## 1     a     t 1     a     t 2## 2     b     u 2     b     u 3## 3     c     v 3     d     v 4

4、數(shù)據(jù)排序

arrange(.data, …, .by_group = FALSE) :根據(jù)變量進(jìn)行排序 + 默認(rèn)升序,在變量前面添加desc()則變?yōu)榻敌?+ .by_group = FALSE 默認(rèn)忽視對(duì)組的升序排序,設(shè)置為TRUE則把組進(jìn)行升序排序以后再按比變量進(jìn)行排序

arrange(mtcars, cyl, desc(disp))  #根據(jù)變量進(jìn)行排序
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
by_cyl <- mtcars %>% group_by(cyl)

by_cyl %>% arrange(desc(wt), .by_group = TRUE) #默認(rèn)忽視對(duì)組的升序排序,設(shè)置為TRUE則把組進(jìn)行升序排序以后再按比變量進(jìn)行排序
## # A tibble: 32 x 11
## # Groups:   cyl [3]##      mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1  24.4     4 147.     62  3.69  3.19  20       1     0     4     2
##  2  22.8     4 141.     95  3.92  3.15  22.9     1     0     4     2
##  3  21.4     4 121     109  4.11  2.78  18.6     1     1     4     2
##  4  21.5     4 120.     97  3.7   2.46  20.0     1     0     3     1
##  5  22.8     4 108      93  3.85  2.32  18.6     1     1     4     1
##  6  32.4     4  78.7    66  4.08  2.2   19.5     1     1     4     1
##  7  26       4 120.     91  4.43  2.14  16.7     0     1     5     2
##  8  27.3     4  79      66  4.08  1.94  18.9     1     1     4     1
##  9  33.9     4  71.1    65  4.22  1.84  19.9     1     1     4     1
## 10  30.4     4  75.7    52  4.93  1.62  18.5     1     1     4     2
## # … with 22 more rows

“R語(yǔ)言中如何合并dplyr”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI