我希望这不是交叉发布。我一直试图从stackoverflow上的可用链接中了解如何对数据进行从长到宽的更改。我想我快到了,但仍然有很多失踪。
我已经说明了在电动和汽油汽车之间进行选择的偏好数据。一些变量通常与汽车有关,例如PREZZO,而另一些变量与电动汽车有关,例如AUTONOMIA_EV,而其他变量与内燃机汽车有关,例如AUTONOMIA ICEV。
每个受访者在INTERTOT栏中均用数字标识。第一响应者的号码为111。该个人有20行,因为他在两辆汽车,一辆电动汽车和一辆汽油中面临10种选择。在SCELTAEFF2列中,等于1的值表示个人进行的选择。必须将此值与对应的列EV中所报告的值进行比较,其中值1表示该行中的选项是电动汽车。
因此,例如,如果您查看第4行,该行涉及第一个人面临的第二个选择,则列SCELTAEFF2的值为1,列EV上的对应行也为1。这就是说,对于第二个提议的替代方案,受访者选择了电动汽车。如果您感兴趣地看第8行,涉及第四个选择,则个人选择汽油车。之所以如此,是因为列SCELTAEFF2的值为1,但列EV上的对应行为零。
[现在,我希望每个受访者只有INTERTOT,只有一行,包含现在分布在20行中的所有信息。
我拥有的文件很大,所以我只向您显示一部分。
我想估计一种混合选择模型,并通过delta方法进行支付意愿的计算,但第一个问题与数据格式正确有关。
我正在尝试的代码如下:prova_reshape.wide = reshape(data = "prova_reshape", idvar = "INTERTOT", direction = "wide" )
,
但是,当然,我收到以下错误消息:Error in data[, timevar] : numero di dimensioni errato
因为我没有指定timevar
。好吧,我没有,因为我不知道要放什么。此外,我不确定指定idvar = "INTERTOT"
是否足够。
我查看了网络上的其他来源,例如:
和此
我想我可能会接近,但是我不确定该如何进行。
如果有人可以帮助我,我将非常有帮助。
马可
亲爱的罗纳克·沙(Ronak Shah),非常感谢您的帮助。我试过dput(head(prova_reshape,20))
结果为以下
structure(list(QI = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), CSET = c(10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L), INTERTOT = c(111L, 111L, 111L, 111L, 111L,
111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L, 111L,
111L, 111L, 111L, 111L), NSCELTA = c(1L, 1L, 2L, 2L, 3L, 3L,
4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 9L, 10L, 10L), SCELTAEFF2 = c(0L,
1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L,
1L, 1L, 0L), MARCA = c(4L, 1L, 1L, 2L, 1L, 4L, 4L, 2L, 2L, 3L,
1L, 2L, 3L, 1L, 2L, 3L, 2L, 4L, 3L, 1L), EV = c(1L, 0L, 1L, 0L,
1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L
), PREZZO = c(25000L, 30000L, 25000L, 20000L, 30000L, 25000L,
20000L, 15000L, 25000L, 15000L, 30000L, 20000L, 20000L, 25000L,
35000L, 30000L, 20000L, 15000L, 35000L, 20000L), AUTONOMIA = c(150L,
1200L, 150L, 800L, 150L, 400L, 350L, 400L, 250L, 400L, 350L,
1200L, 150L, 800L, 350L, 800L, 250L, 1200L, 250L, 400L), AUTONOMIA_EV = c(150L,
0L, 150L, 0L, 150L, 0L, 350L, 0L, 250L, 0L, 350L, 0L, 150L, 0L,
350L, 0L, 250L, 0L, 250L, 0L), AUTONOMIA_ICEV = c(0L, 1200L,
0L, 800L, 0L, 400L, 0L, 400L, 0L, 400L, 0L, 1200L, 0L, 800L,
0L, 800L, 0L, 1200L, 0L, 400L)), row.names = c(NA, 20L), class = "data.frame")
我希望这有助于示例的可复制性。
非常感谢您的帮助,因为我一开始就坚持这一过程。
马可