假设我开发了两种不同的测量工具(a3 和 a4)来评估心理属性,例如沟通技巧。a3工具是仪器的第一个版本,它有6个项目(1、2、3、4、5、6)。A4 是 a3 的更新版本,它只开发了某些项目来替换 a3 版本的某些项目。因此,虽然我的数据集总是有来自 a3 的项目 1 到 6,但我只能有来自 a4 版本的项目 1、2 和 5。
因为我有这两个工具,所以我用 domain_version_item 标记它们。因此,我有一个像这样的数据集:
> asq_online %>%
+ names
[1] "id" "age_interval" "com_a3_1" "com_a3_2" "com_a3_3"
[6] "com_a3_4" "com_a3_5" "com_a3_6" "com_a4_1" "com_a4_2"
如果我想返回 a3 版本,没关系:
+ select(starts_with("com_a3")) %>%
+ names
[1] "com_a3_1" "com_a3_2" "com_a3_3" "com_a3_4" "com_a3_5" "com_a3_6"
>
如果我的目标是只返回 a4,那没关系:
> asq_online %>%
+ select(starts_with("com_a4")) %>%
+ names
[1] "com_a4_1" "com_a4_2"
所以,现在我知道 a4 版本是为了替换 a3 版本中的项目 1 和 2,我应该用com_a4_1、com_a4_2、 com_a3_3、com_a3_4、com_a3_5、com_a3_6组成一个数据集
我正在努力构建这种语法。我看到我必须比较具有相同后缀的项目,然后将其替换为这样的打印:
“com_a4_1” “com_a4_2” “com_a3_3” “com_a3_4” “com_a3_5” “com_a3_6”
这是我的数据集
asq_online <- structure(list(id = c(1, 2, 3, 4, 5), age_interval = c(12, 12,
12, 12, 12), com_a3_1 = c(0, 0, 5, 0, 10), com_a3_2 = c(5, 0,
10, 0, 5), com_a3_3 = c(10, 10, 10, 0, 5), com_a3_4 = c(5, 0,
0, 10, 10), com_a3_5 = c(5, 5, 0, 10, 10), com_a3_6 = c(5, 10,
0, 5, 5), com_a4_1 = c(10, 5, 5, 10, 10), com_a4_2 = c(10, 5,
0, 0, 10)), row.names = c(NA, -5L), class = c("tbl_df", "tbl",
"data.frame"))
如果我遗漏任何信息,请告诉我。我想留在 tidyverse 环境中。谢谢你。