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

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

data.table連接,然后將列添加到現(xiàn)有的data.frame中,而無需重新復(fù)制

data.table連接,然后將列添加到現(xiàn)有的data.frame中,而無需重新復(fù)制

海綿寶寶撒 2019-12-04 12:46:42
我有兩個data.tables,X(3m行,約500列)和Y(100行,兩列)。set.seed(1)X <- data.table( a=letters, b=letters, c=letters, g=sample(c(1:5,7),length(letters),replace=TRUE), key="g" )Y <- data.table( z=runif(6), g=1:6, key="g" )我想在X上做一個左外部連接,這Y[X]要歸功于:為什么data.tables的X [Y]聯(lián)接不允許完全外部聯(lián)接或左聯(lián)接?但是我想添加新列X 而不進行復(fù)制X(因為它很大)。顯然,類似的東西很X <- Y[X]有效,但除非data.table比我認(rèn)為它聰明得多(而且我認(rèn)為它有很多曲折!),否則我相信它會復(fù)制整個X。X[ , z:= Y[X,z]$z ] 可以,但是很笨拙,無法很好地擴展到不止一列。如何以有效的方式(無論是在副本方面還是在程序員時間方面)將合并結(jié)果存儲回保留的data.table中?
查看完整描述

2 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗 獲得超2個贊

這很容易做到:


X[Y, z := i.z]

之所以起作用,是因為Y[X]和之間的唯一區(qū)別X[Y]是當(dāng)某些元素不在in時Y,在這種情況下,您可能想z成為NA,上面的賦值恰好可以做到。


它對于許多變量也同樣適用:


X[Y, `:=`(z1 = i.z1, z2 = i.z2, ...)]

由于您需要進行操作Y[X],因此可以添加參數(shù)nomatch=0(如@mnel所指出的),以便對于X不包含Y的鍵值的那些對象不獲取NA。即:


X[Y, z := i.z, nomatch=0]

從NEWS獲取data.table


    **********************************************

    **                                          **

    **   CHANGES IN DATA.TABLE VERSION 1.7.10   **

    **                                          **

    **********************************************

新的功能


o   The prefix i. can now be used in j to refer to join inherited

    columns of i that are otherwise masked by columns in x with

    the same name.


查看完整回答
反對 回復(fù) 2019-12-04
?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊

除了上述答案外,您還可以執(zhí)行(v1.9.6+):


require(data.table) # v1.9.6+

X[Y, (colNames) := mget(paste0("i.", colNames))]

colNames字符向量在哪里列出您想要的列Y。這樣,當(dāng)您要添加許多列時,您可以有效地選擇要添加的列(colNames從的子集定義names(Y))。


另外,您可以將其與新on=參數(shù)(來自v1.9.6+)組合為:


# ad-hoc joins using 'on=' instead of setting keys

require(data.table) # v1.9.6+

X[Y, (colNames) := mget(paste0("i.", colNames)), on = "g"]

值得在(colNames) := mget(colNames)這里使用akrun的策略:更新R中的數(shù)據(jù)幀行。


查看完整回答
反對 回復(fù) 2019-12-04
  • 2 回答
  • 0 關(guān)注
  • 684 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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