r - 熔化和转化贴有标签的李克特量表 R
问题描述
在我的调查中,我犯了一个错误的 5 点李克特量表,如下所示:
dput(head(edu_data))
structure(list(Education.1. = structure(c(1L, 1L, 1L, 1L, 1L,
1L), .Label = c("", "Y"), class = "factor"), Education.2. = structure(c(1L,
1L, 1L, 1L, 1L, 1L), .Label = c("", "Y"), class = "factor"),
Education.3. = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("",
"Y"), class = "factor"), Education.4. = structure(c(1L, 1L,
1L, 2L, 2L, 1L), .Label = c("", "Y"), class = "factor"),
Education.5. = structure(c(2L, 2L, 2L, 1L, 1L, 1L), .Label = c("",
"Y"), class = "factor")), row.names = c(NA, 6L), class = "data.frame")
我想将其更改为具有单个值的一列,使得 answer_to_ls= 1:5
我想要得到的输出将是一个带有单个数字的列,这意味着摆脱字母。我当然有唯一的受访者 ID
请告诉我,如果我想成为社区中有价值的一员,我能否以某种方式更清楚地说明我的问题。
解决方案
我认为有很多潜在的解决方案可用,尝试将多个二进制或二分列合并或折叠成单个列。例如:
R - 将各种虚拟/逻辑变量从其名称转换为单个分类变量/因子
在您的情况下,您可以尝试以下操作:
edu_data$answer_to_ls <- apply(edu_data[1:5] == "Y", 1, function(x) { if (any(x)) { as.numeric(gsub(".*(\\d+).", "\\1", names(which(x)))) } else NA })
这将从李克特量表响应 1 到 5 的列名称中提取数字,使其成为数值,如果没有“Y”响应,则包括 NA。edu_data[1:5]
选择要考虑进行转换的列,在本例中为列 1 到 5。
Education.1. Education.2. Education.3. Education.4. Education.5. answer_to_ls
1 Y 5
2 Y 5
3 Y 5
4 Y 4
5 Y 4
6 NA
推荐阅读
- security - 如何证明应用程序源代码在运行时对应于指定的快照?
- python - 缺少数据范围 Pandas 数据框比较 Python
- typescript - Object Property 方法并具有 TypeScript 中函数的良好推断
- amazon-web-services - 无法让路由 53 域指向 Heroku 应用程序
- java - 如何在 Spring Boot 中使用 Enum 类返回验证消息?
- sql - 创建函数的问题
- python - PEP 符合点击使用情况
- google-apps-script - 如何使用应用程序脚本在谷歌表格的特定单元格中设置值?
- apache - ErrorLog 不适用于代理的 VirtualHost 域
- ruby-on-rails - 覆盖模型的create方法