Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R dcast更改数据帧的内容_R_Casting_Reshape_Reshape2 - Fatal编程技术网

R dcast更改数据帧的内容

R dcast更改数据帧的内容,r,casting,reshape,reshape2,R,Casting,Reshape,Reshape2,我尝试使用重塑包来重塑我得到的数据帧,但当使用它时,数据帧中的数字会发生变化,这是不应该发生的 数据框包含多个变量以及这些变量被测量的次数,每个人有6行,即该人被测量的6倍。现在,我想重塑数据帧,使每个人只有一行,而不是6行,这意味着每个变量都应该有6次(每次测量一次),这应该可以通过以下代码轻松完成: melteddata <- melt(daten, id=(c("IDParticipant", "looporder"))) datenrestrukturiert <- dca

我尝试使用重塑包来重塑我得到的数据帧,但当使用它时,数据帧中的数字会发生变化,这是不应该发生的

数据框包含多个变量以及这些变量被测量的次数,每个人有6行,即该人被测量的6倍。现在,我想重塑数据帧,使每个人只有一行,而不是6行,这意味着每个变量都应该有6次(每次测量一次),这应该可以通过以下代码轻松完成:

melteddata <- melt(daten, id=(c("IDParticipant", "looporder")))

datenrestrukturiert <- dcast(melteddata, IDParticipant~looporder+variable)
datenrestrukturiert如下所示:

我不想聚合或做任何事情,这就是为什么我尝试添加
fun.aggregate=NULL
而不做任何更改,同时始终会出现以下消息:

“缺少聚合函数:默认为长度”

到目前为止,一切都正常,但有一个问题:当使用dcast(以及cast)时,变量中的一些数字会被更改,大多数是“0”或“1”,但通常会有一些其他数字,如“3.44”或“4.77”或类似的数字,但在计算cast时,它们大多会更改为“0”

有人知道为什么会这样吗

可能会有帮助的更多信息:当我通过read.csv2导入数据集时,我总是会得到第一个变量的奇怪名称,即变量名称前面的符号比Excel中显示的多:“ï..IDParticipant”,我将其重命名为“IDParticipant”,这与此有关吗


另一个附带事实:使用我提供的sampleframe运行它,一切正常,原始数据帧由1404行和353个变量组成,它对R来说可能太大了吗?

如果您有重复的LHS和RHS变量组合,那么您需要(1)创建一个二级ID,或者(2)执行某种形式的聚合

您可以使用
any(duplicated(…))
测试重复项

下面是一个示例,使用您现有的“daten”示例(其中不包含重复项):

在此情况下,您可以考虑从我的“SPLITSTACKFILE”包中使用<代码> GATANID<代码>,以便方便地向数据集添加一个辅助ID。

library(splitstackshape)

melteddata2 <- melt(getanID(daten2, idvars), c(".id", idvars))

datenrestrukturiert2 <- dcast.data.table(
  melteddata2, .id + IDParticipant ~ looporder + variable)

datenrestrukturiert2
#    .id IDParticipant 1_pc_mean_1 1_bd_mean_1 1_sm 1_cm 2_pc_mean_1 2_bd_mean_1 2_sm
# 1:   1             1          NA          NA  999  999    3.222222    2.888889    4
# 2:   1             2          NA          NA   NA   NA    3.666667    2.750000    4
# 3:   1             3        3.25    4.083333    5    3          NA          NA  999
# 4:   2             1          NA          NA  999  999          NA          NA   NA
# 5:   2             2          NA          NA   NA   NA    3.666667    2.750000    4
#          2_cm 3_pc_mean_1 3_bd_mean_1 3_sm       3_cm 5_pc_mean_1 5_bd_mean_1     5_sm
# 1:   1.333333          NA          NA  999 999.000000    3.222222    2.888889 3.666667
# 2:   2.000000    3.666667    2.750000    4   2.000000    3.666667    2.750000 5.000000
# 3: 999.000000    3.250000    4.083333    5   1.666667          NA          NA       NA
# 4:         NA          NA          NA   NA         NA    3.222222    2.888889 3.666667
# 5:   2.000000          NA          NA   NA         NA          NA          NA       NA
#        5_cm 6_pc_mean_1 6_bd_mean_1 6_sm 6_cm
# 1: 2.333333    3.222222    2.888889    1    1
# 2: 2.333333    3.666667    2.750000    5    1
# 3:       NA          NA          NA   NA   NA
# 4: 2.333333          NA          NA   NA   NA
# 5:       NA          NA          NA   NA   NA
库(splitstackshape)

melteddata2如果您有重复的LHS和RHS变量组合,那么您需要(1)创建二级ID,或者(2)执行某种形式的聚合

您可以使用
any(duplicated(…))
测试重复项

下面是一个示例,使用您现有的“daten”示例(其中不包含重复项):

在此情况下,您可以考虑从我的“SPLITSTACKFILE”包中使用<代码> GATANID<代码>,以便方便地向数据集添加一个辅助ID。

library(splitstackshape)

melteddata2 <- melt(getanID(daten2, idvars), c(".id", idvars))

datenrestrukturiert2 <- dcast.data.table(
  melteddata2, .id + IDParticipant ~ looporder + variable)

datenrestrukturiert2
#    .id IDParticipant 1_pc_mean_1 1_bd_mean_1 1_sm 1_cm 2_pc_mean_1 2_bd_mean_1 2_sm
# 1:   1             1          NA          NA  999  999    3.222222    2.888889    4
# 2:   1             2          NA          NA   NA   NA    3.666667    2.750000    4
# 3:   1             3        3.25    4.083333    5    3          NA          NA  999
# 4:   2             1          NA          NA  999  999          NA          NA   NA
# 5:   2             2          NA          NA   NA   NA    3.666667    2.750000    4
#          2_cm 3_pc_mean_1 3_bd_mean_1 3_sm       3_cm 5_pc_mean_1 5_bd_mean_1     5_sm
# 1:   1.333333          NA          NA  999 999.000000    3.222222    2.888889 3.666667
# 2:   2.000000    3.666667    2.750000    4   2.000000    3.666667    2.750000 5.000000
# 3: 999.000000    3.250000    4.083333    5   1.666667          NA          NA       NA
# 4:         NA          NA          NA   NA         NA    3.222222    2.888889 3.666667
# 5:   2.000000          NA          NA   NA         NA          NA          NA       NA
#        5_cm 6_pc_mean_1 6_bd_mean_1 6_sm 6_cm
# 1: 2.333333    3.222222    2.888889    1    1
# 2: 2.333333    3.666667    2.750000    5    1
# 3:       NA          NA          NA   NA   NA
# 4: 2.333333          NA          NA   NA   NA
# 5:       NA          NA          NA   NA   NA
库(splitstackshape)

melteddata2这是我基于Anandas建议的解决方案(非常感谢)

dataframe是“daten”,包含许多变量,例如“IDParticipant”、“looporder”和“sm”

首先,我们需要创建一个包含变量的对象,以便以后使用melt-and-cast函数


idvars这是我基于Anandas建议的解决方案(非常感谢)

dataframe是“daten”,包含许多变量,例如“IDParticipant”、“looporder”和“sm”

首先,我们需要创建一个包含变量的对象,以便以后使用melt-and-cast函数


IDVAR每个变量组合有多个值吗?你能分享一些输入和输出的例子吗?嗨,欢迎来到SO。我们无法根据推测回答您的问题;我们需要知道你的数据是什么样子的。请提供
任何(重复的(日期[c(“IDParticipant”,“looporder”)))
的结果是什么?我得到的结果是TRUE@psytar,则必须添加辅助ID才能继续。每个变量组合是否有多个值?你能分享一些输入和输出的例子吗?嗨,欢迎来到SO。我们无法根据推测回答您的问题;我们需要知道你的数据是什么样子的。请提供
任何(重复的(日期[c(“IDParticipant”,“looporder”)))
的结果是什么?我得到的结果是TRUE@psytar,然后您必须添加一个辅助ID才能继续。非常感谢您的回答,很遗憾,我不完全理解您的意思,不应该有任何重复,但正如你所说,测试这个的函数说有,你对LHS和RHS变量的意思是什么?我不熟悉那里的住址,非常感谢你的帮助@psytar,左手边和右手边,参考公式。编辑:它现在不知怎么起作用了,我会弄清楚它是如何起作用的,答案非常感谢你的回答,不幸的是,我不完全理解你的意思,不应该有任何重复,但正如你所说,测试这个的函数说有,LHS和RHS变量是什么意思?我不熟悉那里的住址,非常感谢你的帮助@psytar,左手边和右手边,参考公式。编辑:它现在不知怎么起作用了,我会找出答案
daten2 <- rbind(daten, daten[c(1, 4, 6), ])
any(duplicated(daten2[idvars]))
# [1] TRUE
library(splitstackshape)

melteddata2 <- melt(getanID(daten2, idvars), c(".id", idvars))

datenrestrukturiert2 <- dcast.data.table(
  melteddata2, .id + IDParticipant ~ looporder + variable)

datenrestrukturiert2
#    .id IDParticipant 1_pc_mean_1 1_bd_mean_1 1_sm 1_cm 2_pc_mean_1 2_bd_mean_1 2_sm
# 1:   1             1          NA          NA  999  999    3.222222    2.888889    4
# 2:   1             2          NA          NA   NA   NA    3.666667    2.750000    4
# 3:   1             3        3.25    4.083333    5    3          NA          NA  999
# 4:   2             1          NA          NA  999  999          NA          NA   NA
# 5:   2             2          NA          NA   NA   NA    3.666667    2.750000    4
#          2_cm 3_pc_mean_1 3_bd_mean_1 3_sm       3_cm 5_pc_mean_1 5_bd_mean_1     5_sm
# 1:   1.333333          NA          NA  999 999.000000    3.222222    2.888889 3.666667
# 2:   2.000000    3.666667    2.750000    4   2.000000    3.666667    2.750000 5.000000
# 3: 999.000000    3.250000    4.083333    5   1.666667          NA          NA       NA
# 4:         NA          NA          NA   NA         NA    3.222222    2.888889 3.666667
# 5:   2.000000          NA          NA   NA         NA          NA          NA       NA
#        5_cm 6_pc_mean_1 6_bd_mean_1 6_sm 6_cm
# 1: 2.333333    3.222222    2.888889    1    1
# 2: 2.333333    3.666667    2.750000    5    1
# 3:       NA          NA          NA   NA   NA
# 4: 2.333333          NA          NA   NA   NA
# 5:       NA          NA          NA   NA   NA