在R中的dcast中保留变量

在R中的dcast中保留变量,r,R,我正在使用R中的dcast函数将长格式数据集转换为宽格式数据集。我有一个ID编号、一个分类变量(CAT)和一个连续变量(AMT)。但是,我还有一个变量SEX,它对于给定ID编号的所有行都是相同的。这段代码用于创建宽格式数据集,但我丢失了SEX。我怎样才能保留它 PC1cast <- dcast(PC1, ID~CAT, value.var='AMT', fun.aggregate=sum, na.rm=TRUE) 为此,您需要在公式的ID端添加SEX: dcast(PC1, ID + S

我正在使用R中的
dcast
函数将长格式数据集转换为宽格式数据集。我有一个
ID
编号、一个分类变量(
CAT
)和一个连续变量(
AMT
)。但是,我还有一个变量
SEX
,它对于给定
ID
编号的所有行都是相同的。这段代码用于创建宽格式数据集,但我丢失了
SEX
。我怎样才能保留它

PC1cast <- dcast(PC1, ID~CAT, value.var='AMT', fun.aggregate=sum, na.rm=TRUE)

为此,您需要在公式的
ID
端添加
SEX

dcast(PC1, ID + SEX~CAT, value.var='AMT', fun.aggregate=sum, na.rm=TRUE)
# results in:

  ID    SEX  A  B  C
1  1 Female 46 22 31
2  2   Male 17 25 44

公式左侧的内容保持原样,右侧的内容进行转换。

我添加了一些额外的数据行,以澄清其中的一些部分。但要点是,你只需要把
SEX
放在左手边(即
~
):


PC2请不要交叉发帖。我认为链接的问题应该是这个问题的重复,因为这个问题更完整data@RichardScriven是的,我收回了我的投票。
dcast(PC1, ID + SEX~CAT, value.var='AMT', fun.aggregate=sum, na.rm=TRUE)
# results in:

  ID    SEX  A  B  C
1  1 Female 46 22 31
2  2   Male 17 25 44
PC2 <- read.table(text="ID CAT AMT SEX 
1  A   46  Female 
1  B   22  Female 
1  C   31  Female 
2  A   17  Male 
2  B   25  Male 
2  C   44  Male
3  A   47  Female 
3  B   27  Female 
3  C   37  Female 
4  A   17  Male 
4  A   17  Male 
4  B   22  Male 
4  B   NA  Male 
4  C   44  Male", header=T)

library(reshape2)
PC1cast2 <- dcast(PC2, ID+SEX~CAT, value.var='AMT', fun.aggregate=sum, 
                  na.rm=TRUE)
PC1cast2
#   ID    SEX  A  B  C
# 1  1 Female 46 22 31
# 2  2   Male 17 25 44
# 3  3 Female 47 27 37
# 4  4   Male 34 22 44