【发布时间】:2021-11-11 01:42:50
【问题描述】:
我正在清理算术测试的数据。
有些测试项目是多项选择题,学生选择其中一项(例如a)、b) 或c))。
在数据集中,我通过将项目转换为二进制变量来创建新变量。
例如,如果正确答案是
a) 对于 Item1,我通过重新编码 a) = 1 和 otherwise = 0 制作了 newItem_1(NA 保持原样)。
我想通过表格原始变量和新变量来仔细检查重新编码是否成功完成。只做这一对(在本例中为Item1 和newItem_1)很容易,但由于我有很多这样的多项选择项,因此编写脚本来逐一列出每一对是不高效的。
这是我的问题:有没有办法用每对这些原始变量和新变量制作二维表? 我尝试通过for循环来做到这一点,并在网上寻找提示,但目前找不到解决方案。
我在下面提取了部分数据框。
structure(list(ID = 1:20, gender = c("Male", "Male", "Male",
"Male", "Male", "Male", "Male", "Male", "Male", "Male", "Male",
"Male", "Male", "Male", "Male", "Female", "Female", "Female",
"Female", "Female"), Item1 = c("c", "c", "a", "a", NA, "c", "c",
"b", "b", "b", "c", "c", NA, "c", "a", "d", "c", "c", "c", "c"
), Item2 = c("d", "d", "d", "d", "d", "a", "a", "a", "a", "b",
"b", "c", "c", "c", "c", "d", NA, NA, "d", "d"), Item3 = c("b",
"d", NA, "a", NA, "d", "c", "c", NA, "d", "c", NA, NA, "c", "d",
"c", "d", "d", "d", "d"), new_Item1 = c(1L, 1L, 0L, 0L, NA, 1L,
1L, 0L, 0L, 0L, 1L, 1L, NA, 1L, 0L, 0L, 1L, 1L, 1L, 1L), new_Item2 = c(1L,
1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, NA,
NA, 1L, 1L), new_Item3 = c(0L, 0L, NA, 0L, NA, 0L, 1L, 1L, NA,
0L, 1L, NA, NA, 1L, 0L, 1L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA,
-20L))
非常感谢。
顺
对于一对,我只需输入:
图书馆(看门人)
tabyl (g3, Item1, new_Item1)
我可以看到我的重新编码是正确的。但在这种情况下,我想通过 Item1、2 和 3(以及更多)循环相同的表格。所以我的预期输出将类似于(如果我使用 tabyl):
-------------------
项目 1 1 0 不适用
###
b # # #
c###
d # # #
不适用 # # #
项目 2 1 0 不适用
###
b # # #
c###
d # # #
.....
----------------------
我希望我的解释清楚。
【问题讨论】:
-
亲爱的 Ronak,我编辑了我的原始帖子。请看一看。