使用R中的旧数据填充新数据框

时间:2016-01-23 21:48:56

标签: r dataframe

嗨集体脑力。这是交易 - 我有一个如下所示的数据框:

>df

Mom MomAge 
aa  1
aa  3
aa  4
bb  2
bb  4
cc  1
cc  3
cc  5

每一行都是XX岁时出生的孩子XX岁。我想填充一个新的数据框,将现有数据编码成二元回答(1 =在X岁时出生的孩子,0 =在X岁时出生的孩子,不是从1岁到5岁的每个孩子出生的孩子):

    1  2  3  4  5
aa  1  0  1  1  0    
bb  0  1  0  1  0
cc  1  0  1  0  1

到目前为止,我有这个:

>momlist<-unique(df$Mom)
>M<-matrix(data = NA, nrow = length(Mom), ncol=5)
>M<-data.frame(M)
>rownames(M) <-momlist
>colnames(M) <-c(1:5)
>M
   1  2  3  4  5
aa NA NA NA NA NA 
bb NA NA NA NA NA
cc NA NA NA NA NA

不确定如何填充M ...也许是if / then然后是for循环?提前谢谢了!

1 个答案:

答案 0 :(得分:1)

您可以使用dcast中的reshape2来转移数据,并提供返回1或0的函数(而不是默认值)。

设置数据

txt <- "Mom, MomAge 
aa,  1
aa,  3
aa,  4
bb,  2
bb,  4
cc,  1
cc,  3
cc,  5"

df <- read.csv(text = txt, header = TRUE)

数据透视数据

library(reshape2)
dcast(df, Mom ~ MomAge, fill=0, function(x){ x>0 })

  Mom 1 2 3 4 5
1  aa 1 0 1 1 0
2  bb 0 1 0 1 0
3  cc 1 0 1 0 1