【发布时间】:2023-12-24 12:13:01
【问题描述】:
我尝试使用 reshape 包来重塑我得到的数据框,但是在使用它时,数据框中的数字会改变,这不应该。
数据框包含多个变量以及这些变量被测量的多次,每个人有 6 行,即该人被测量的 6 次。现在我想重塑数据框,因此每个人只有一行而不是 6 行,这意味着每个变量应该存在 6 次(每次测量一次),这应该很容易使用以下代码完成:
melteddata <- melt(daten, id=(c("IDParticipant", "looporder")))
datenrestrukturiert <- dcast(melteddata, IDParticipant~looporder+variable)
“daten”是原始数据框,“looporder”是反映测量时间(1-6)的变量,这里是一个例子(不幸的是我不知道如何发布表格):
https://www.dropbox.com/s/8c9dm4rttedbzw1/daten.jpg?dl=0
或者这很好:
structure(list(IDParticipant = c(1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 3L, 3L, 3L), looporder = c(1L, 2L, 3L, 5L, 6L, 2L, 3L,
5L, 6L, 1L, 2L, 3L), pc_mean_1 = c(NA, 3.22222222222222, NA,
3.22222222222222, 3.22222222222222, 3.66666666666667, 3.66666666666667,
3.66666666666667, 3.66666666666667, 3.25, NA, 3.25), bd_mean_1 = c(NA,
2.88888888888889, NA, 2.88888888888889, 2.88888888888889, 2.75,
2.75, 2.75, 2.75, 4.08333333333333, NA, 4.08333333333333), sm = c(999,
4, 999, 3.66666666666667, 1, 4, 4, 5, 5, 5, 999, 5), cm = c(999,
1.33333333333333, 999, 2.33333333333333, 1, 2, 2, 2.33333333333333,
1, 3, 999, 1.66666666666667)), .Names = c("IDParticipant", "looporder",
"pc_mean_1", "bd_mean_1", "sm", "cm"), row.names = c(NA, 12L), class = "data.frame")
datenrestrukturiert 如下所示:
https://www.dropbox.com/s/al93lnj76y1j266/datenrestrukturiert.jpg?dl=0
我不想聚合或任何东西,这就是为什么我尝试添加fun.aggregate = NULL而不做任何更改,而且总是有以下消息:
“缺少聚合函数:默认为长度”
到目前为止一切正常,但有一个问题:当使用 dcast(以及 cast)时,变量中的一些数字会发生变化,主要是“0”或“1”,但通常应该有一些其他数字,如“ 3.44" 或 "4.77" 或类似的东西,但在计算演员表时它们大部分更改为 "0"
有人知道为什么会这样吗?
更多信息可能会有所帮助:当我通过 read.csv2 导入数据集时,第一个变量的名称总是很奇怪,即变量名前面的符号比 Excel 中显示的要多:“ï..IDParticipant ”,我将其重命名为“IDParticipant”,这与它有什么关系吗?
另一个问题:用我提供的 sampleframe 运行它,一切都很好,原始数据帧由 1404 行和 353 个变量组成,对 R 来说会不会太大?
【问题讨论】:
-
每个变量组合是否有多个值?你能分享一些示例输入和输出吗?
-
嗨,欢迎来到 SO。我们无法根据推测回答您的问题;我们需要知道您的数据是什么样的。请提供reproducible example
-
any(duplicated(daten[c("IDParticipant", "looporder")]))的结果是什么? -
我得到的结果是TRUE
-
@psytar,那么您必须先添加一个辅助 ID,然后才能继续。
标签: r casting reshape reshape2