R:从长到宽的转换并聚合具有匹配ID的行

R:从长到宽的转换并聚合具有匹配ID的行,r,dataframe,transformation,transpose,reshape2,R,Dataframe,Transformation,Transpose,Reshape2,这是我已经研究了一段时间的东西,只是制作单独的数据帧并进行完全连接,但我认为有一种更简单的方法 总的来说,我想从一个长格式的数据帧中按类型计算时间1到时间2的单个ID值之间的差异。这是我认为我可以做到的方法之一,但如果其他人有其他的技巧或想法,我也希望听到他们 然而,我也想知道如何解决这个转置问题,因为我很好奇 这是我的问题 我有一个长格式的数据框架,在两个不同的时间段有5种不同的度量。我想将这个数据帧从长格式转换为宽格式,这样就不用像这样有一个DF(注意,并不是所有类型都包括在内——只是为了长

这是我已经研究了一段时间的东西,只是制作单独的数据帧并进行完全连接,但我认为有一种更简单的方法

总的来说,我想从一个长格式的数据帧中按类型计算时间1到时间2的单个ID值之间的差异。这是我认为我可以做到的方法之一,但如果其他人有其他的技巧或想法,我也希望听到他们

然而,我也想知道如何解决这个转置问题,因为我很好奇

这是我的问题

我有一个长格式的数据框架,在两个不同的时间段有5种不同的度量。我想将这个数据帧从长格式转换为宽格式,这样就不用像这样有一个DF(注意,并不是所有类型都包括在内——只是为了长度而做了2):

(示例df1)

我希望它看起来更像这样:

(示例df 2)

我使用:

library(dplyr)
library(tidyr)
df.new <- df %>%
spread(Type, Measurement.Value)
但现在我想为每种类型分配时间。当我在示例df3上执行类似操作时:

newer.df <- df.new %>%
spread(Time, Type1)
所以,它为每一行生成一个NA——有没有一种方法可以通过ID将行相互折叠?我想我错过了什么

请记住,在我的示例代码中,我只使用了2种类型,但实际上我有5种类型——只是想给出简化的代码。

我们可以使用
dcast()
来自
restrape2

library(reshape2)
dcast(df, ID ~ Type + Time, value.var = "Value")
#  ID Type1_1 Type1_2 Type2_1 Type2_2
#1  1       7       8      13      15
#2  2       9      10      17      19

或者使用原始的
tidyr
软件包,我们可以这样做:

library(tidyr)
df$Type <- paste(df$Type, df$Time, sep="_")
df$Time <- NULL
spread(df, key=Type, value=Value)
 ID Type1_1 Type1_2 Type2_1 Type2_2
  1       7       8      13      15
  2       9      10      17      19
library(tidyr)

df$类型这工作!非常感谢你。我确实尝试过使用
cast()
使用
reformate
包,但遇到了同样的问题。我很高兴看到
重塑2
有了我的解决方案。这个解决方案也很有效。非常感谢。是的,我想还有比这样变换变量更优雅的事情。不管怎样,都很有效,谢谢你。
newer.df <- df.new %>%
spread(Time, Type1)
ID   Type1.1   Type1.2
1      7          NA 
1      NA         8 
2      9          NA
2      NA         10
library(reshape2)
dcast(df, ID ~ Type + Time, value.var = "Value")
#  ID Type1_1 Type1_2 Type2_1 Type2_2
#1  1       7       8      13      15
#2  2       9      10      17      19
library(tidyr)
df$Type <- paste(df$Type, df$Time, sep="_")
df$Time <- NULL
spread(df, key=Type, value=Value)
 ID Type1_1 Type1_2 Type2_1 Type2_2
  1       7       8      13      15
  2       9      10      17      19