簡體   English   中英

如何在分類響應中匯總數據以獲取R中每種響應類型的百分比?

[英]How can I aggregate data with categorical responses to get the percentage of each response type in R?

我想獲取不同類型問題(TYPE)的分類答案類型的百分比。 對於每個人的每種類型,我都有多個響應,以及多個分類響應(不同級別)。

1)每個人都應位於不同的行,並且
2)列應為TYPES + Response Level,其值為該個人對該問題類型給出特定響應級別的次數的百分比。

數據如下所示:

SUBJECT TYPE    RESPONSE  
John    a   kappa                       
John    b   gamma  
John    a   delta  
John    a   gamma  
Mary    a   kappa   
Mary    a   delta       
Mary    b   kappa  
Mary    a   gamma  
Bill    b   delta  
Bill    a   gamma  

結果應如下所示:

SUBJECT a-kappa     a-gamma   a-delta   b-kappa     b-gamma b-delta
John    0.33        0.33      0.33      1.00        1.00    0.00
Mary    0.66        0.33      0.00      1.00        0.00    0.00
Bill    1.00        0.00      0.00      0.00        0.00    1.00

根據c1au61o_HH的回答,我能夠創建一些適用於實際數據文件的內容,但仍需要進行一些后期處理。 (它也不是很優雅,但這是一個小問題。)

 Finaldf <- mydata %>%     
 group_by(Subject,Type) %>%     
 mutate(TOT = n()) %>%      
 group_by(Subject, Response, Type) %>%     
 mutate(RESPTOT = n())     

 Finaldf <- distinct(Finaldf)    
 Finaldf$Percentage <- Finaldf$RESPTOT/Finaldf$TOT    

任何幫助,不勝感激,也請一些解釋。

可能這不是最有效的方法,但是如果您想使用tidyverse ,則可以將2列tidyverse ,然后進行2個不同的group_by來計算每個主題和百分比的總計。

library(tidyverse)
df %>% 
  unite(TYPE_RESPONSE, c("TYPE", "RESPONSE"), sep = "_") %>% 
  group_by(SUBJECT) %>% 
  mutate(TOT = n()) %>% 
  group_by(SUBJECT, TYPE_RESPONSE) %>% 
  summarize(perc = n()/TOT * 100) %>% 
  spread(TYPE_RESPONSE, perc)

數據:

df <- tibble( SUBJECT= rep(c("John", "Mary","Bill"), each = 4), 
                 TYPE = rep(c("a","b"), 6),
                 RESPONSE = rep(c("kappa", "gamma", "delta"), 4)
)

編輯以回復評論:

我了解您想通過SUBJECTTYPE計算百分比,因此代碼如下所示:

library(tidyverse)
df %>% 
  group_by(SUBJECT, TYPE) %>% 
  mutate(TOT = n()) %>%
  unite(TYPE_RESPONSE, c("TYPE", "RESPONSE"), sep = "_") %>% 
  group_by(SUBJECT, TYPE_RESPONSE) %>% 
  summarize(perc = n()/TOT * 100)%>% 
  spread(TYPE_RESPONSE, perc)

暫無
暫無

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

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