如何解决在R中将数值组合为数据框以运行EstCRM
我正在做一些研究,并使用R Studio(版本3.6.1)分析收集的数据。数据包含从0到100的连续项目响应。由于数据的性质是连续响应,因此我必须在R中使用CRM来执行项目响应理论(IRT)分析。因此,我决定使用由Cengiz Zpopluoglu创建的EstCRM软件包(1.4版)。
下面是我使用的数据示例。在此示例中,数据集由我使用的3个变量或项目组成,命名为PA1至PA3。另外,我设置有5位参与者。实际数据集包含100多个项目和100多个参与者。
> str(Data_ManDown) Classes ‘tbl_df’,‘tbl’ and 'data.frame': 5 obs. of 3 variables:
$ PA1: num 100 75 20 49 90
$ PA2: num 100 75 80 100 80
$ PA3: num 0 30 40 100 80
我命名为“ Data_ManDown”的数据将在此EstCRM程序包中运行,尤其是EstCRMitem
。
CRM <- EstCRMitem(Data_ManDown[,1:3],max.item=c(100,100,100),min.item=c(0,0),max.EMCycle=500,converge=.01,type="Wang&Zeng",BFGS=TRUE)
CRM$param
运行EstCRMitem
命令时,我遇到的问题开始了。控制台显示此通知。
The column vectors are not numeric. Please check your data
当我检查数据时,似乎我从excel上传的数据被视为一个列表。
> class(Data_ManDown)
[1] "tbl_df" "tbl" "data.frame"
> typeof(Data_ManDown)
[1] "list"
> is.numeric(Data_ManDown)
[1] FALSE
然后,我决定使用numeric
将我的数据强制输入as.numeric
并将其放回到数据框中,以便可以在EstCRMitem
命令中运行。我发现数据也不必是numeric
,还必须是data frame
。
> iPA1 <- as.numeric(Data_ManDown[[1]])
> iPA2 <- as.numeric(Data_ManDown[[2]])
> iPA3 <- as.numeric(Data_ManDown[[3]])
>
> is.numeric(iPA1)
[1] TRUE
> is.numeric(iPA2)
[1] TRUE
> is.numeric(iPA3)
[1] TRUE
> ManDown_Num <- as.data.frame(cbind(PA1 = iPA1,PA2 = iPA2,PA3 = iPA3))
>
> is.numeric(ManDown_Num)
[1] FALSE
> class(ManDown_Num)
[1] "data.frame"
> typeof(ManDown_Num)
[1] "list"
不幸的是,当我将数据组合成一个包含3个上述变量的数据帧时,数据以list
的形式返回。因此EstCRMitem
失败无法运行。另外,我还尝试了其他几种方法,例如使用unlist
或将iPA1
放在iPA3
中作为单独的data.frame
。它有效,但效果不佳,因为我必须对每个变量逐一进行分析。考虑到大量数据,此方法最好是最后的选择。
总而言之,主要的问题是,是否存在(或可能)一种替代方法,该方法可以将这些类型的数据转换为由许多元素(参与者的许多行和行为的许多列)组成的data.frame
项),并且同时也被视为numeric
?为了在EstCRMitem命令中进行分析。
在旁注中,我还寻找了其他可能类似且可能有帮助的问题的参考,例如:
尽管我发现在这种情况下可能有所不同,所以还没有明显的解决方案。也感谢您抽出宝贵的时间来研究这个问题并获得帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。