【发布时间】:2019-04-20 18:50:50
【问题描述】:
我花了一天时间寻找这个答案,但我几乎要放弃了。实际上,我真的想象这是一个非常简单的情况,但我会很高兴得到任何帮助。
假设我有两个数据集,第一个获取所有学生的所有ID
library(tidyverse)
library(psych)
ds_of_students <- data.frame(id=(1:4), school=c("public","private"))
第二个有测试的所有结果。假设每一列都是一个 ID。
ds_of_results <- structure(list(i1 = c(1, 2, 4, 4),
i2 = c(3, 3, 2, 2),
i3 = c(2, 3, 3, 5),
i4 = c(4, 1, 3, 2)),
class = c("tbl_df", "tbl",
"data.frame"), row.names = c(NA, -4L))
现在我需要报告一个学生 ID 表,按学校分组,以及他们的结果(实际上,这是 Cronbach alpha 结果,这在心理学中很常见)。
ds_of_students %>%
group_by(school) %>%
summarise(n=n(),
id = paste(id, collapse = ",")) %>%
mutate(item2=psych::alpha(ds_of_results[c(id)])$total[1])
我收到了这条消息
Error in mutate_impl(.data, dots) :
Evaluation error: Columns `2,4`, `1,3` not found.
但是当我以传统方式跑步时,它会起作用
psych::alpha(ds_of_results[c(1,3)])$total[1]
请运行此代码以获得可重现的结果。非常感谢!
library(tidyverse)
library(psych)
ds_of_students <- data.frame(id=(1:4), school=c("public","private"))
ds_of_results <- structure(list(i1 = c(1, 2, 4, 4),
i2 = c(3, 3, 2, 2),
i3 = c(2, 3, 3, 5),
i4 = c(4, 1, 3, 2)),
class = c("tbl_df", "tbl",
"data.frame"), row.names = c(NA, -4L))
ds_of_students %>%
group_by(school) %>%
summarise(n=n(),
id = paste(id, collapse = ",")) %>%
mutate(item2=psych::alpha(ds_of_results[c(id)])$total[1])
alpha(ds_of_results[c(1,3)])$total[1]
为了给我的问题一些现实,那是真正的数据集,我必须在其中计算 Cronbach 的 alpha 项和每个组的项。
【问题讨论】:
-
您能否也为这个示例提供您想要的结果?
-
粘贴时,您正在创建一个字符向量。您不能将字符串“2,4”作为子集调用传递并期望得到与传递两个整数相同的结果。
-
@iod 请看一下新代码。我添加了一张图片并更改了代码以明确我的问题。谢谢。