r - 如何将许多“chr”转换为具有有序水平的因子?
问题描述
我正在尝试分析大量调查数据,这些数据具有多种不同类型的响应选项。对于某些问题,回答是“非常不同意”到“非常同意”,而对于其他问题,可能是“负面影响”到“正面影响”到目前为止,我已经制作了映射到不同响应选项的列对象
impactvars <- c(21:23,130:134)
motiatingvars <- c(24:31)
importantvars <- c(32:37,45:49,70:84,112:117)
satisfiedvars <- c(38:44, 50:54,118:123)
likertvars <- c(55:69,136:152,169:172)
infovars <- c(85:92,101)
usefulvars <- c(93:100, 102, 153:168)
comfortvars <- c(103:111)
我已经能够通过以下方式使用 lapply 将所有这些转换为一般因素
mydata[,names] <- lapply(mydata[,names] , factor)
我的问题是,因为这些数据本质上是序数,所以我需要指定级别,而不仅仅是让 R 随机分配它们。不幸的是,当我尝试指定级别时,代码不起作用。这是我尝试过的代码:
teamsdata_cleaned[,impactvars] <- lapply(teamsdata_cleaned[,impactvars], factor(teamsdata_cleaned[,impactvars],ordered = TRUE,
levels = c("Negative impact",
"Slight negative impact", "No impact",
"Slight positive impact",
"Positive impact")))
有没有办法将许多数字列强制转换为具有指定水平的因子?
解决方案
我们可以用
teamsdata_cleaned[,impactvars] <- lapply(teamsdata_cleaned[,impactvars], function(x) factor(x,ordered = TRUE,
levels = c("Negative impact",
"Slight negative impact", "No impact",
"Slight positive impact",
"Positive impact")))
或使用tidyverse
library(dplyr)
teamsdata_cleaned <- teamsdata_cleaned %>%
mutate(across(all_vars(impactvars), ~ factor(.,
ordered = TRUE, levels = c("Negative impact",
"Slight negative impact", "No impact",
"Slight positive impact",
"Positive impact"))))
推荐阅读
- css - WordPress CSS 侧边栏布局
- swift - 无法检测到 SKSpritNode 的接触(Swift Xcode)
- oracle - 我需要与此选择等效的数据透视 sql
- ios - 如何在 ViewWillAppear 中为自定义 UITableViewCell 添加边框
- java - 如何不断更新整数
- docker - 量角器无法在 docker 容器中启动
- python - Python Google Cloud Firestore 错误 504 Deadline Exceeded
- php - PHP IMAP 电子邮件正文解码问题
- sql - 需要 oracle 查询以在一个字符串中显示数据
- python - PyQt5 QWebEnginePage - 可以编辑 HTML 以打开下拉列表吗?