我进行了一项研究,回顾起来(人生经验教训:-))似乎生成了多层数据。现在我正在尝试将数据集从宽格式重构为长格式,以便使用例如lme4进行分析。
在这样做的过程中,我遇到了一个问题,这个问题我之前遇到过几次,但我从未找到好的解决方案。这次我再次搜索,但我可能使用了错误的关键字,或者这个问题比我想象的要罕见得多。
基本上,在这个数据集中,变量名称指示收集哪些测量数据。我要求参与者对干预措施(可以是任何事情)进行评分。每种干预措施都属于6个行为领域之一。此外,参与者对每种干预措施进行评分,无论是单独呈现还是与另一种干预措施同时呈现,或者与两种其他干预措施同时呈现。有三种类型的干预措施,它们都在我向他们提供一些信息之前(t0)和之后(t1)进行了评估。
因此,实际上,我有一个可以像这样重新生成的数据框:
现在,我想将这些数据转换为长数据框,包含6个变量,例如'id'、'measurementMoment'、'interventionType'、'nrOfInterventionsSimultaneously'、'behaviorDomain'和'evaluation',其中第一个变量表示记录所属的参与者,最后一个变量是参与者给定特定干预的得分(评分、等级、评估),中间的四个变量指示正在评估哪种干预措施。
我可能可以为此问题编写一些“自定义”代码,但我希望R“有解决方案”。我一直在尝试使用reshape2,例如:
在这样做的过程中,我遇到了一个问题,这个问题我之前遇到过几次,但我从未找到好的解决方案。这次我再次搜索,但我可能使用了错误的关键字,或者这个问题比我想象的要罕见得多。
基本上,在这个数据集中,变量名称指示收集哪些测量数据。我要求参与者对干预措施(可以是任何事情)进行评分。每种干预措施都属于6个行为领域之一。此外,参与者对每种干预措施进行评分,无论是单独呈现还是与另一种干预措施同时呈现,或者与两种其他干预措施同时呈现。有三种类型的干预措施,它们都在我向他们提供一些信息之前(t0)和之后(t1)进行了评估。
因此,实际上,我有一个可以像这样重新生成的数据框:
### Elements of the variable names
measurementMomentsVector <- c("t0", "t1");
interventionTypesVector <- c("fear", "know", "scd");
nrOfInterventionsSimultaneouslyVector <- c(1, 2, 3);
behaviorDomainsVector <- c("diet", "pox", "alc", "smoking", "traff", "adh");
### Generate a vector with all variable names
variableNames <-
apply(expand.grid(measurementMomentsVector,
interventionTypesVector,
nrOfInterventionsSimultaneouslyVector,
behaviorDomainsVector),
1, paste0, collapse="_");
### Generate 5 'participants' worth of data
wideData <- data.frame(matrix(rnorm(5*length(variableNames)), nrow=5));
### Assign names
names(wideData) <- variableNames;
### Add unique id variable for every participants
wideData$id <- 1:5;
因此,使用 head(wideData)[, 1:5]
您可以大致了解数据框的外观:
t0_fear_1_diet t1_fear_1_diet t0_know_1_diet t1_know_1_diet t0_scd_1_diet
1 -0.9338191 0.9747453 1.0069036 0.3500103 -0.844699708
2 0.8921867 1.3687834 -1.2005791 0.2747955 1.316768219
3 1.6200200 0.5245470 -1.2910586 1.3211912 -0.174795144
4 0.1543738 0.7535642 0.4726131 -0.3464789 -0.009190702
5 -1.3676692 -0.4491574 -2.0902003 -0.3484678 -2.537501824
现在,我想将这些数据转换为长数据框,包含6个变量,例如'id'、'measurementMoment'、'interventionType'、'nrOfInterventionsSimultaneously'、'behaviorDomain'和'evaluation',其中第一个变量表示记录所属的参与者,最后一个变量是参与者给定特定干预的得分(评分、等级、评估),中间的四个变量指示正在评估哪种干预措施。
我可能可以为此问题编写一些“自定义”代码,但我希望R“有解决方案”。我一直在尝试使用reshape2,例如:
longData <- reshape(wideData, varying=1:(ncol(wideData)-1),
idvar="id",
sep="_", direction="long")
但是它无法猜测时间变化的变量:
Error in guess(varying) :
failed to guess time-varying variables from their names
我已经多次遇到这个问题,但在网上找不到任何答案。现在我真的需要继续前进,所以在求助定制方案之前,我想尝试一下最后的努力:-)
如果有人能提供任何指针,我将非常感激!!!
firstSecondOccurrenceVector
的值是多少? - krlmlr