內切我有一個數據幀,如以下示例:施加dplyr
ID <- 1:6
DRUG <- c(1,1,0,1,0,0)
PRD <- c(1,1,2,2,3,3)
MAX <- c(15,20,50,18,80,350)
df <- data.frame(ID,DRUG,PRD,MAX)
欲倉MAX
到預先定義的時間間隔和用於ID
在每個數做一總結通過DRUG
和PRD
類別。
我的數據集比所提供的示例大得多。
有沒有辦法使用dplyr
或任何其他軟件包在R中進行分箱和彙總?
我試過這個tapply(df$MAX,cut(df$MAX,4),length)
,但它將數據分成相等的間隔,這不是我想要實現的。此外,它沒有給出DRUG
和PRD
的總結。
更新:我想出了一個更好的解決方案,由數據框中的變量構成;但是,如果間隔有NA
觀測數據的數量,那麼它不會將其保留在輸出摘要中。我怎樣才能將它保留在我的摘要中?除了報告n
之外,如何使輸出成爲百分比。
df %>%
group_by(DRUG,PRD,cut(MAX,breaks=c(0,20,40,60,Inf))) %>%
summarise(n=n())
這給:
DRUG PRD cut(MAX, breaks = c(0, 20, 40, 60, In... n
(dbl) (dbl) (fctr) (int)
1 0 2 (40,60] 1
2 0 3 (60,Inf] 2
3 1 1 (0,20] 2
4 1 2 (0,20] 1
所以在這裏,例如,從(0,15]對於DRUG==0
和PRD==2
間隔因爲沒有內的任何值沒有出現在彙總這個間隔,我怎麼能有所有的時間間隔,即使沒有任何價值的間隔(它應該給NA
而不是)?另外,我怎麼可以添加一個計算的百分比基於總數ID
在每個DRUG
和PRD
類別?
有很多的工作在SO例子。使用問題標題中的一些關鍵字進行搜索。 –
參見'cut','dplyr :: group_by'和'dplyr :: summarise'。 – jeremycg
@jeremycg我已經看到cut的例子是你定義間隔的數量,但不是間隔本身,這不是目標。我想手動定義它們。 – Amer