如果這是一個重複,我真的不知道我正在嘗試實現的正確術語。R按組的統計來自數據框
我有藥物的實驗室結果的數據幀如下:
╔══════╦════════╗ ║ drug ║ result ║ ╠══════╬════════╣ ║ A ║ 10 ║ ║ B ║ 150 ║ ║ B ║ 50 ║ ║ A ║ 14 ║ ║ C ║ 3 ║ ║ C ║ 7 ║ ╚══════╩════════╝
對於每種藥物,我使用的dplyr去除異常值(>從平均4 SD的)使用以下:
cleaned <- data %>% group_by(drug) %>% filter(abs(result-mean(result))/sd(result) < 4)
但現在我想知道我有多少離羣百藥取出,所以基本上我想生成一個數據幀,看起來像如下:
╔══════╦═══════════╦══════════╦════════════╗ ║ drug ║ total (N) ║ outliers ║ % outliers ║ ╠══════╬═══════════╬══════════╬════════════╣ ║ A ║ 100 ║ 7 ║ 0.07 ║ ║ B ║ 200 ║ 45 ║ 0.225 ║ ║ C ║ 300 ║ 99 ║ 0.33 ║ ╚══════╩═══════════╩══════════╩════════════╝
這樣做的最好方法是什麼?
我只是想出瞭如何使用總結。我一直只使用R約一週,所以如果有更好的方式,請告訴我: 'isnorm < - function(x){sum(abs(x-mean(x))/ sd(x) (數據%>%group_by(藥物),N = n(),normal = isnorm(測試),離羣值= N-正常,out_pct =離羣值/ N)' –
@AlexanderDavid Yeah <0121> ,看起來不錯。更習慣的是鏈接整個事情,如'data%>%group_by(drug)%>%summarize(...)' – Frank
真棒,謝謝你們! –