【发布时间】:2020-01-03 23:16:05
【问题描述】:
我正在尝试对数据框中的某些项目进行反向评分(重新编码)。所有反向计分项目都以 R 结尾,并且每个量表都有一个唯一的开始(“hc”、“out”和“hm”)。我通常只会选择所有以“r”结尾的变量,但问题是某些量表是 5 分制(“hc”和“out”),而另一些是 7 分制(“hm ")。
这是一个更大的数据集的示例:
library(tidyverse)
data <- tibble(name = c("Mike", "Ray", "Hassan"),
hc_1 = c(1, 2, 3),
hc_2r = c(5, 5, 4),
out_1r = c(5, 4, 2),
out_2 = c(2, 4, 5),
out_3r = c(2, 2, 1),
hm_1 = c(6, 7, 7),
hm_2r = c(7, 1, 7))
假设我想一次做一个量表,所以我从 hm 开始,它是一个 7 点量表。
我想用 & 语句尝试这样的事情,但我得到一个错误:
library(tidyverse)
library(car)
data %>%
mutate_at(vars(ends_with("r") & starts_with("hm")), ~(recode(., "1=7; 2=6; 3=5; 4=4; 5=3; 6=2; 7=1")))
错误:
ends_with("r") & starts_with("hc")必须计算为列位置或名称,而不是逻辑向量
什么是让它一次对这几个变量执行反向评分的干净方法?再一次,数据集太大了,实际上一次只能选择单个变量。
谢谢!
【问题讨论】:
-
你需要
vars(matches("^hm.*r$")) -
@akrun,我从来没想过,谢谢!如果您作为答案发布,我将接受作为答案。谢谢!