R中的比例表,考虑到独特的人

jxct1oxe  于 2023-11-14  发布在  其他
关注(0)|答案(3)|浏览(94)

我在一项研究中有三个人。他们被要求拿起尽可能多的水果。然后我想计算每个水果被拿起的次数,并使用参与者的数量作为分母创建一个比例。
我有一个参与者ID和水果的名称安排在一个表如下:

id<-c("a","a","a","b","b","c","c","c","c")
fruit<-c("apple","pear","orange","apple","grapes","apple","pear","orange","grapefruit")
data<-data.frame(id,fruit, stringsAsFactors = FALSE)

#I would normally approach the problem using the tabyl function
janitor::tabyl(data,fruit)

字符串
百分比包括分母中的所有值,这不是我想要的。它说33%的人选择了苹果,而我需要的百分比是100%的人选择了苹果,33%的人选择了葡萄等。
有没有人能提出一个代码,用参与者的数量作为分母来计算每种水果的百分比?

j1dl9f46

j1dl9f461#

dplyr

library(dplyr)
data |> 
  summarise(
    n = n(), 
    percent = n() / n_distinct(data$id) * 100,
    .by = fruit
  )

#        fruit n   percent
# 1      apple 3 100.00000
# 2       pear 2  66.66667
# 3     orange 2  66.66667
# 4     grapes 1  33.33333
# 5 grapefruit 1  33.33333

字符串
data.table

setDT(data)[, .(n = .N, percent = .N / length(unique(data$id))), by = fruit]

vddsk6oq

vddsk6oq2#

使用colMeans + table的基本R选项

> rev(stack(colMeans(table(data)) * 100))
         ind    values
1      apple 100.00000
2 grapefruit  33.33333
3     grapes  33.33333
4     orange  66.66667
5       pear  66.66667

字符串

6ju8rftf

6ju8rftf3#

n_participants <- length(unique(data$id))
pick_count     <- table(data$fruit)

pick_count / n_participants
#     apple grapefruit     grapes     orange       pear 
# 1.0000000  0.3333333  0.3333333  0.6666667  0.6666667

字符串

相关问题