[英]Populating new data frame with old data in R
嗨,集體智慧。 這是交易-我有一個看起來像這樣的數據框:
>df
Mom MomAge
aa 1
aa 3
aa 4
bb 2
bb 4
cc 1
cc 3
cc 5
每行都是XX歲媽媽XX歲時生的孩子。 我想填充一個新的數據框,將每個數據從1到5歲的現有數據編碼為二進制響應(1 = X媽媽出生的孩子,0 = X媽媽出生的孩子):
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循環? 提前謝謝了!
您可以通過轉動你的數據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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.