我有這個資料框
df = data.frame(name = c('a','b','c',NA,NA,'d','e',NA,NA,'f','g','h'),
Freq = c(10,20,70,NA,NA,40,60,NA,NA,80,10,10) )
輸出(我正在尋找)將是這樣的(我在以下結果中手動創建了每列以使我的想法清晰)
name Freq per
1 a 10 10%
2 b 20 20%
3 c 70 70%
4 <NA> NA NA
5 <NA> NA NA
6 d 40 40%
7 e 60 60%
8 <NA> NA NA
9 <NA> NA NA
10 f 80 80%
11 g 10 10%
12 h 10 10%
所以 a 的百分比是a/(a b c)。b 的百分比是b/(a b c)。和 c 是c/(a b c)
但是:d 的百分比是d/(d e)而 e 是e/(d e)
NA 在每個參考百分比組之間分開。我希望它很清楚,謝謝。
uj5u.com熱心網友回復:
我們可以通過在基于 NA 值的邏輯向量上獲取累積和來創建分組列,然后replace是值不是 NA 的“Freq” proportions,ungroup并洗掉臨時的“grp”列
library(dplyr)
df %>%
group_by(grp = cumsum(is.na(name))) %>%
mutate(per = replace(Freq, !is.na(Freq),
paste0(100*proportions(Freq[!is.na(Freq)]), "%"))) %>%
ungroup %>%
select(-grp)
-輸出
# A tibble: 12 × 3
name Freq per
<chr> <dbl> <chr>
1 a 10 10%
2 b 20 20%
3 c 70 70%
4 <NA> NA <NA>
5 <NA> NA <NA>
6 d 40 40%
7 e 60 60%
8 <NA> NA <NA>
9 <NA> NA <NA>
10 f 80 80%
11 g 10 10%
12 h 10 10%
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530720.html
標籤:r数据框呐百分比
上一篇:python資料框唯一值
下一篇:R編輯資料框的子集并覆寫原始行值
