r - 清理调查数据 - 每列中有一对相似的问题
问题描述
我有一个凌乱的数据集(来自 CATI 调查)。由于受访者/合作伙伴/子文件,我正在努力准备和整理它,处理每列中的双重(一对类似的问题)
例如,一组性别数据如下所示(1 = 男性,2 = 女性)
# A tibble: 7 x 7
Household_size q_1 q_2 q_3 q_4 q_5 q_6
<int> <int> <int> <int> <int> <int> <int>
1 3 1 2 1 NA NA NA
2 2 2 1 NA NA NA NA
3 5 1 2 1 1 2 NA
4 3 2 2 1 NA NA NA
5 6 2 1 1 1 1 1
6 5 1 2 1 2 2 NA
7 3 1 2 2 NA NA NA
元数据 说:
q_1 is interviewee gender q_2 is interviewee - partner gender (if there is any) q_3:q_6 interviewee - kid gender (if there is any)
数据具有相同的教育、职业等格式(受访者/合作伙伴/孩子的一对相同问题)。
我如何整理这个数据集以便能够轻松计算统计摘要或可视化。我想要这样的东西(无论年龄大小,调查中的男性和女性总数):
Male 15
Female 12
解决方案
base R 中的table
函数可能是您正在寻找的,它为您提供了一个多功能选项,可以计算所有级别:
table(unlist(df1[,c(2:7)]))
更改此项以使数据框名称 ( df1
) 和列号c(2,7)
适合您的需要。
这也复制了您的示例:
df1 <- data.frame("v" = LETTERS[1:7], "q1" = c(1,2,1,2,2,1,1), "q2" = c(2,1,2,2,1,2,2), "q3" = c(1,NA,1,1,1,1,2), "q4" = c(NA, NA,1,NA,1,2,NA), "q5" = c(NA, NA,2,NA,1,2,NA), "q6" = c(NA, NA,NA,NA,1,NA,NA))
> table(unlist(df1[,c(2:7)]))
1 2
15 12
更多示例:
df1 <- data.frame("v" = LETTERS[1:5], "q1" = c(1,2,6,1,1), "q2" = c("k","k","f","h","p"), "q3" = c(1,2,NA,1,NA))
> df1
v q1 q2 q3
1 A 1 k 1
2 B 2 k 2
3 C 6 f NA
4 D 1 h 1
5 E 1 p NA
table(unlist(df1[,c(2,4)]))
table(unlist(df1[,3]))
> table(unlist(df1[,c(2,4)]))
1 2 6
5 2 1
> table(unlist(df1[,3]))
f h k p
1 1 2 1
推荐阅读
- arduino - 如何使用 FreeRTOS 上的队列从一个任务到另一个任务发送和接收字符?
- python - 如何在我的 Discord Bot 中修复我的 datetime 命令?
- kubernetes - Istio -- 删除 istio-control-plane 进程被冻结
- android - 如何使用 Android Accessibility Services 获得点击的 View Elements?
- java - 片段活动中的不可达语句
- android - Android App中非英文字符的Json值错误
- r - 将字符向量转换为时间并提取值
- elasticsearch - Elastic Pipelines: Skip Import On Failure
- python - 如何使用 python webscraping 从 datalayer.push 获取数据数据
- vb.net - Microsoft.WinForms.ReportViewer 中的高级 SSRS 报告功能