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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

用于通過索引對(duì)矢量進(jìn)行分區(qū)并對(duì)該分區(qū)執(zhí)行操作的慣用R代碼

用于通過索引對(duì)矢量進(jìn)行分區(qū)并對(duì)該分區(qū)執(zhí)行操作的慣用R代碼

元芳怎么了 2019-08-28 09:20:42
用于通過索引對(duì)矢量進(jìn)行分區(qū)并對(duì)該分區(qū)執(zhí)行操作的慣用R代碼我試圖在R中找到慣用的方法來通過某個(gè)索引向量對(duì)數(shù)值向量進(jìn)行分區(qū),找到該分區(qū)中所有數(shù)字的總和,然后將每個(gè)單獨(dú)的條目除以該分區(qū)總和。換句話說,如果我從這開始:df <- data.frame(x = c(1,2,3,4,5,6), index = c('a', 'a', 'b', 'b', 'c', 'c'))我希望輸出創(chuàng)建一個(gè)向量(讓我們稱之為z):c(1/(1+2), 2/(1+2), 3/(3+4), 3/(3+4), 5/(5+6), 6/(5+6))如果我這樣做是SQL并且可以使用窗口函數(shù),我會(huì)這樣做:select   x / sum(x) over (partition by index) as z  from df如果我使用plyr,我會(huì)做這樣的事情:ddply(df, .(index), transform, z = x / sum(x))但我想知道如何使用標(biāo)準(zhǔn)的R函數(shù)編程工具,如mapply / aggregate等。
查看完整描述

3 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果您只在單個(gè)向量上運(yùn)行并且只需要一個(gè)索引向量,則tapply非常快


dat <- 1:6

lev <- rep(1:3, each = 2)

tapply(dat, lev, function(x){x/sum(x)})

#$`1`

#[1] 0.3333333 0.6666667

#

#$`2`

#[1] 0.4285714 0.5714286

#

#$`3`

#[1] 0.4545455 0.5454545

#

unlist(tapply(dat, lev, function(x){x/sum(x)}))

#       11        12        21        22        31        32 

#0.3333333 0.6666667 0.4285714 0.5714286 0.4545455 0.5454545 


查看完整回答
反對(duì) 回復(fù) 2019-08-28
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

其他三種方法:


dat <- 1:6

lev <- rep(1:3, each = 2)


lapply(split(dat, lev), function(x){x/sum(x)})

by(dat, lev, function(x){x/sum(x)})

aggregate(dat, list(lev), function(x){x/sum(x)})


查看完整回答
反對(duì) 回復(fù) 2019-08-28
  • 3 回答
  • 0 關(guān)注
  • 498 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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