第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何連接(合并)數(shù)據(jù)框(內(nèi)部,外部,左側(cè),右側(cè))

如何連接(合并)數(shù)據(jù)框(內(nèi)部,外部,左側(cè),右側(cè))

12345678_0001 2019-05-20 16:25:26
給出兩個數(shù)據(jù)框:df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))df1#  CustomerId Product#           1 Toaster#           2 Toaster#           3 Toaster#           4   Radio#           5   Radio#           6   Radiodf2#  CustomerId   State#           2 Alabama#           4 Alabama#           6    Ohio我怎樣才能做數(shù)據(jù)庫風(fēng)格,即sql風(fēng)格,加入?也就是說,我該怎么做:一個內(nèi)連接的df1和df2:只返回行中左表在右表匹配的密鑰。一個外連接的df1和df2:返回兩個表中的所有行,從有右表中的匹配鍵左連接記錄。甲左外連接(或簡稱為左加入)的df1和df2左表中返回所有行,并與匹配的右表鍵任何行。一個右外連接的df1,并df2返回右表中的所有行,任何行與左表中匹配的密鑰。額外信用:如何進(jìn)行SQL樣式選擇語句?
查看完整描述

4 回答

?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個贊


內(nèi)連接有data.table方法,這非常節(jié)省時間和內(nèi)存(對于一些較大的data.frames是必需的):


library(data.table)


dt1 <- data.table(df1, key = "CustomerId") 

dt2 <- data.table(df2, key = "CustomerId")


joined.dt1.dt.2 <- dt1[dt2]

merge也適用于data.tables(因?yàn)樗峭ㄓ玫暮驼{(diào)用merge.data.table)


merge(dt1, dt2)

stackoverflow上記錄的data.table:

如何進(jìn)行data.table合并操作
將外鍵上的SQL連接轉(zhuǎn)換為R data.table語法
為更大的data.frames合并的有效替代方案R 
如何使用data.table進(jìn)行基本的左外連接在R?

另一種選擇是joinplyr包中找到的功能

library(plyr)


join(df1, df2,

     type = "inner")


#   CustomerId Product   State

# 1          2 Toaster Alabama

# 2          4   Radio Alabama

# 3          6   Radio    Ohio

為選項(xiàng)type:inner,left,right,full。


From ?join:與merge[ join] 不同,[ ]無論使用何種連接類型,都會保留x的順序。


查看完整回答
反對 回復(fù) 2019-05-20
?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個贊

你也可以使用Hadley Wickham令人敬畏的dplyr軟件包進(jìn)行連接。


library(dplyr)


#make sure that CustomerId cols are both type numeric

#they ARE not using the provided code in question and dplyr will complain

df1$CustomerId <- as.numeric(df1$CustomerId)

df2$CustomerId <- as.numeric(df2$CustomerId)

變異連接:使用df2中的匹配將列添加到df1

#inner

inner_join(df1, df2)


#left outer

left_join(df1, df2)


#right outer

right_join(df1, df2)


#alternate right outer

left_join(df2, df1)


#full join

full_join(df1, df2)

過濾聯(lián)接:過濾掉df1中的行,不要修改列

semi_join(df1, df2) #keep only observations in df1 that match in df2.

anti_join(df1, df2) #drops all observations in df1 that match in df2.


查看完整回答
反對 回復(fù) 2019-05-20
  • 4 回答
  • 0 關(guān)注
  • 1069 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號