【发布时间】:2020-10-12 14:58:19
【问题描述】:
我有以下数据集,其中包含以下变量,指示一个人是否使用过他们的手机(一个虚拟变量,1 = 使用过手机(“是”)和 0(“否”)否则);他们的 ID 和他们居住的区和街道。请注意,同一个人可能在不同街道下被记录两次或多次。但是,我只想统计这样一个人一次,即只考虑唯一 ID。
district sub_district id used_phone
A SX 1 Yes
A SX 2 Yes
A SX 3 No
A SX 4 No
A SY 4 No
A SY 5 Yes
A SZ 6 Yes
A SX 6 Yes
A SZ 7 No
B RX 8 No
B RV 9 No
B RX 9 No
B RV 10 Yes
B RV 11 Yes
B RT 12 Yes
B RT 13 Yes
B RV 13 Yes
B RT 14 No
B RX 14 No
注意:used_phone 是一个因子变量
对于上述数据集,我想绘制“一个人是否使用电话”的分布,我使用以下代码:
ggplot(df, aes(x=used_phone)) +
geom_bar(color = "black", fill = "aquamarine4", position = "dodge") +
labs(x="Used phone", y = "Number of people") +
ggtitle("Whether person used phone") +
theme_bw() +
theme(plot.title = element_text(hjust = 0.5)))
此代码运行良好。但是,我想做两件事:
- 在相应的条上为每个组(是和否)添加 % 标签,但在 y 轴上显示“计数”
- 绘制图表,使其仅考虑唯一 ID
期待在您的帮助下解决这个问题,因为我是 R 新手。
谢谢, 拉奇塔
【问题讨论】:
-
能否将您的数据的最小子集包含为数据框对象?也许使用
dput(df)。这允许测试和验证潜在的解决方案。看看minimal reproducible example。 -
感谢彼得的建议!我已经更新了数据集。不幸的是,我无法发布原始数据集,因此制作了一个供您查看。希望这很好。
-
至于唯一ID,请考虑使用
df[!duplicated(df$id),] -
嗨,@4redwood:上述链接对我没有帮助。不过,谢谢指出!