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

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

對于每一行,返回最大值的列名。

對于每一行,返回最大值的列名。

小唯快跑啊 2019-06-15 10:40:28
對于每一行,返回最大值的列名。我有一份員工名冊,我需要知道他們最常在哪個部門工作。根據(jù)部門名稱列出員工ID是很簡單的,但是從頻次表返回部門名稱而不是名冊計數(shù)要復(fù)雜得多。下面是一個簡單的示例(列名=部門,行名=雇員ID)。DF <- matrix(sample(1:9,9),ncol=3,nrow=3)DF <- as.data.frame.matrix(DF)> DF   V1 V2 V31  2  7  92  8  3  63  1  5  4現(xiàn)在我怎么才能> DF2   RE1 V32 V13 V2
查看完整描述

3 回答

?
慕容森

TA貢獻1853條經(jīng)驗 獲得超18個贊

如果你對data.table解決辦法,這是一個。這有點棘手,因為您更愿意獲得第一個最大值的id。如果你想要最后的最大值,那就容易多了。盡管如此,它并沒有那么復(fù)雜,而且速度很快!


這里我生成了你們維度的數(shù)據(jù)(26746*18)。


數(shù)據(jù)

set.seed(45)

DF <- data.frame(matrix(sample(10, 26746*18, TRUE), ncol=18))

data.table答:

require(data.table)

DT <- data.table(value=unlist(DF, use.names=FALSE), 

            colid = 1:nrow(DF), rowid = rep(names(DF), each=nrow(DF)))

setkey(DT, colid, value)

t1 <- DT[J(unique(colid), DT[J(unique(colid)), value, mult="last"]), rowid, mult="first"]

基準:

# data.table solution

system.time({

DT <- data.table(value=unlist(DF, use.names=FALSE), 

            colid = 1:nrow(DF), rowid = rep(names(DF), each=nrow(DF)))

setkey(DT, colid, value)

t1 <- DT[J(unique(colid), DT[J(unique(colid)), value, mult="last"]), rowid, mult="first"]

})

#   user  system elapsed 

#  0.174   0.029   0.227 


# apply solution from @thelatemail

system.time(t2 <- colnames(DF)[apply(DF,1,which.max)])

#   user  system elapsed 

#  2.322   0.036   2.602 


identical(t1, t2)

# [1] TRUE

這些維度的數(shù)據(jù)大約快11倍,而且data.table音階也很好。


編輯:如果任何最大ID都可以,那么:

DT <- data.table(value=unlist(DF, use.names=FALSE), 

            colid = 1:nrow(DF), rowid = rep(names(DF), each=nrow(DF)))

setkey(DT, colid, value)

t1 <- DT[J(unique(colid)), rowid, mult="last"]


查看完整回答
反對 回復(fù) 2019-06-15
  • 3 回答
  • 0 關(guān)注
  • 1266 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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