簡體   English   中英

R 中的嵌套匹配函數

[英]Nested Match Functions in R

這是對如何在 R 中查找和求和多個列的后續操作

我有3個數據框:

團體:

P1          P2          P3          P4      
"Joe"       "Sally"     "A.J."      "Mary"  
"Cory"      "Joe"       "Sally"     "Katy"

名稱:

ID      NAME
123     "Joe"
213     "Sally"
312     "A.J."
231     "Mary"
345     "Cory"
567     "Katy"

個人_結果:

ID      SCORE
123     23
213     12
312     11
231     19
345     10
567     22

我的目標是在Groups中創建一個新列,其中SCORE列是組中每個結果的總和

P1          P2          P3          P4          SCORE
"Joe"       "Sally"     "A.J."      "Mary"      65

按照上面引用的問題中的答案示例,我嘗試了以下操作

groups$score = apply(groups, 1, function(x){
    sum(Individual_Results$SCORE[match(match(x, Names$Name), Individual_Results$ID)])
    })

不幸的是,結果是創建新列,但每個分數的結果都是NA

如果我了解如何正確使用applymatch ,我要做的是apply function 應用到每一行,將xName )作為參數傳遞給第一個match function 以獲取ID ,然后將返回的ID與第二個匹配項match以獲得分數 - 將每行的所有分數相加。

我想我非常接近,但並不完全在那里。 感謝任何幫助!

這會成功的。

請注意,您不需要data.table 我只是用它來使示例可重現

require(data.table)

Groups <- data.frame(fread('"P1","P2","P3","P4"
"Joe","Sally","A.J.","Mary"
"Cory","Joe","Sally","Katy"'))

Names <- data.frame(fread('ID,NAME
123,"Joe"
213,"Sally"
312,"A.J."
231,"Mary"
345,"Cory"
567,"Katy"'))

Individual_Results <- data.frame(fread('ID,SCORE
123,23
213,12
312,11
231,19
345,10
567,22'))


Groups$SCORE <- apply(Groups, 1, function(x){
  sum(Individual_Results$SCORE[match(Names$ID[match(x, Names$NAME)], Individual_Results$ID)])
})


# Inspect groups:
Groups
#      P1    P2    P3   P4 SCORE
# 1  Joe Sally  A.J. Mary    65
# 2 Cory   Joe Sally Katy    67

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM