首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算数据中特定值的百分比

如何计算数据中特定值的百分比
EN

Stack Overflow用户
提问于 2022-06-23 19:33:22
回答 2查看 48关注 0票数 1

我有以下数据:

代码语言:javascript
复制
df <- data.frame(
    v1 = c(1,2,NA,2,2,NA,NA,1,NA,1),
    v2 = c(1,2,1,1,2,NA,1,1,1,9),
    v3 = c(2,2,NA,NA,2,9,NA,2,NA,2),
    stringsAsFactors = FALSE
  )

我想计算每一列中1、2和9值的百分比。

我希望总数忽略NA值如下。

代码语言:javascript
复制
df2 <- data.frame(
    v1 = c(50,50,0),
    v2 = c(66.67,22.22,11.11),
    v3 = c(16.66,66.66,16.67),
    row.names = c(1,2,9),
    stringsAsFactors = FALSE
  )

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-23 19:38:37

tableproportions也有一个选项

代码语言:javascript
复制
library(dplyr)
df %>% 
 summarise(across(everything(), 
  ~ round(proportions(table(factor(.x, levels = c(1, 2, 9)))) * 100, 2)) )

-output

代码语言:javascript
复制
 v1    v2    v3
1 50 66.67  0.00
2 50 22.22 83.33
3  0 11.11 16.67
票数 3
EN

Stack Overflow用户

发布于 2022-06-23 19:37:46

代码语言:javascript
复制
vals = c(1, 2, 9)
result = as.data.frame(t(sapply(vals, \(x) 100 * colMeans(df == x, na.rm = TRUE))))
row.names(result) = vals
result
#   v1       v2       v3
# 1 50 66.66667  0.00000
# 2 50 22.22222 83.33333
# 9  0 11.11111 16.66667
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72735691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档