获取R dplyr中每列中1的百分比

Eis*_*sen 2 r dplyr

我有一个像这样的 DF:

row_id   stn_1 stn_2 stn_3 stn_4 stn_5
1        1     0     1     0     1
2        0     1     0     0     0
3        1     0     0     0     0
4        1     0     1     0     0
5        0     0     0     1     0
Run Code Online (Sandbox Code Playgroud)

我想获得数据中出现的 stn 的百分比。基本上是除 row_id 之外每列中 1 的百分比。

预期输出:

stn    percentage
stn_1  .60
stn_2  .20
stn_3  .40
stn_4  .20
stn_5  .20

Run Code Online (Sandbox Code Playgroud)

我怎样才能在 dplyr 中做到这一点?

MrF*_*ick 5

使用dplyrand tidyr,你可以做

dd %>% 
  summarize(across(-row_id, mean)) %>% 
  pivot_longer(names_to="stn", values_to="percentage", everything())
#   stn   percentage
#   <chr>      <dbl>
# 1 stn_1        0.6
# 2 stn_2        0.2
# 3 stn_3        0.4
# 4 stn_4        0.2
# 5 stn_5        0.2
Run Code Online (Sandbox Code Playgroud)

进行summarize计算并pivot_longer进行重塑。