R 使用一些重复值重塑2 cast数据帧

R 使用一些重复值重塑2 cast数据帧,r,casting,reshape,R,Casting,Reshape,我正在尝试使用重塑2包在数据集顶部重新分布列。我在三个地点测量了两次温度和叶绿素a。但是,当我融化并投射数据帧时,fun.aggregate默认为长度。我想保留原始值。以下是一个示例数据集: library(reshape2) library(stringr) df=data.frame(site=rep(1:3,each=2),temp_2009=c(23,24,25,25,23,43),chla_2009=c(3,2,3,4,5,6), temp_2010=c(23,25

我正在尝试使用重塑2包在数据集顶部重新分布列。我在三个地点测量了两次温度和叶绿素a。但是,当我融化并投射数据帧时,fun.aggregate默认为长度。我想保留原始值。以下是一个示例数据集:

library(reshape2)
library(stringr)
df=data.frame(site=rep(1:3,each=2),temp_2009=c(23,24,25,25,23,43),chla_2009=c(3,2,3,4,5,6),
          temp_2010=c(23,25,26,27,23,23),chla_2010=c(2,3,5,6,2,1))
df2=melt(df,id.vars=1,measure.vars=c(2:5))
df2=cbind(df2,data.frame(str_split_fixed(df2$variable,"_",2)))
df2=df2[,-2]
names(df2)[3:4]=c("variable","year")
dcast(df2,site+year~variable)
我认为这与重塑2处理重复值的方式有关


有什么想法吗?

正在聚合行,因为dcast无法根据提供的公式区分它们。如果要保持原始值,则需要包含一个字段以唯一地标识重复项。要继续您的代码

df2$group <- rep(1:2,12)
dcast(df2,site+year+group~variable)

显然,这段代码有点过于简单,尤其是您的数据必须按“组”排序,不缺少任何值,但它应该用于演示如何保留原始值。

由于dcast无法根据提供的公式区分它们,因此正在聚合行。如果要保持原始值,则需要包含一个字段以唯一地标识重复项。要继续您的代码

df2$group <- rep(1:2,12)
dcast(df2,site+year+group~variable)

显然,这段代码有点过于简单,尤其是您的数据必须按“组”排序,不缺少任何值,但它应该用于演示如何保留原始值。

另一个尝试使用重复值dcast熔融数据集的选项是让dcast计算最相关的平均值/中值/最小值/最大值在您的案例中“解决”重复项

 dcast(df2, site+year~variable, fun.aggregate = mean)

显然,删除合并记录-OP说这是不可取的

另一个尝试使用重复值dcast熔融数据集的选项是让dcast根据您的情况计算最相关的平均值/中值/最小值/最大值,以“解决”重复项

 dcast(df2, site+year~variable, fun.aggregate = mean)

显然,删除合并记录-OP说这是不可取的

一般来说,写出您认为data.frame应该是什么样子-至少第一行是有用的。一般来说,写出您认为data.frame应该是什么样子-至少第一行是有用的。