【发布时间】:2018-03-14 16:27:40
【问题描述】:
这当然是一个基本问题,但我自己无法弄清楚。请考虑以下几点:
在具有长格式患者特征的大型数据集中,我想总结一些变量。我更愿意使用dplyr。
对于示例数据集:
db <- data.frame(ID = c(rep(1, 3), rep(2,4), rep(3, 2)),
Gender = factor(c(rep("woman", 7), rep("man", 2))),
Grade = c(rep(3, 3), rep(1, 4), rep(2, 2)))
db
# ID Gender Grade
# 1 1 woman 3
# 2 1 woman 3
# 3 1 woman 3
# 4 2 woman 1
# 5 2 woman 1
# 6 2 woman 1
# 7 2 woman 1
# 8 3 man 2
# 9 3 man 2
我想为Gender 和Grade 制作频率表。显然,有2名女性患者和1名男性患者。每个等级 (1:3) 出现一次。
我试过了:
x <- db %>% group_by(ID, Gender, Grade)
table(y$Gender)
x
# A tibble: 9 x 3
# Groups: ID, Gender, Grade [3]
# ID Gender Grade
# <dbl> <fct> <dbl>
# 1 1. woman 3.
# 2 1. woman 3.
# 3 1. woman 3.
# 4 2. woman 1.
# 5 2. woman 1.
# 6 2. woman 1.
# 7 2. woman 1.
# 8 3. man 2.
# 9 3. man 2.
但是当我打电话给例如table(x$Gender)时,结果是:
table(y$Gender)
# man woman
# 2 7
我做错了什么?
提前非常感谢!
编辑:所需的输出是有一个频率表,其中包含数据集中有多少男性/女性参与者,以及有多少患者有 1、2、3 级等。请参见下文。
通过以下我可以调用 db 中女性的百分比:
db %>%
summarise(pct.female = mean(Gender == "woman", na.rm = T))
# pct.female
# 1 0.7777778
我宁愿需要的是男性/女性的数量 (n)。像这样的:
# man woman
# 1 2
【问题讨论】:
-
预期的输出是 #man woman # 1 2
-
从
dplyr看count和tally -
哎呀对不起@konvas,刚刚发布了我的答案,还没有看到你的评论。我将直接归功于它。