我有一项imcds
调查的数据框架,该调查向住户询问了家庭中每个人的性别和年龄信息。因此,住户将是人1,其余的人将是人2、3、4等...因此:
uniqid Age1 Age2 Age3 Sex1 Sex2 Sex3
1012501 9 7 5 1 2 1
1012502 9 7 5 1 2 1
1012503 9 7 5 1 2 1
1012601 8 5 NA 2 1 NA
1012602 8 5 NA 2 1 NA
的前五个数字uniqid
是家庭ID,后两个数字是个人标识符。因此,人的年龄值1012503
是Age3
(5),和性是Sex3
(1)。我想做的就是将数据框重塑imcds
成这样的样子:
uniqid Age Sex
1012501 9 1
1012502 7 2
1012503 5 1
1012601 8 2
1012602 5 1
每个uniqid
都有其对应的值Sex
和Age
值。数据帧具有583个变量的2095 obs。我需要循环吗?我能做什么?
我们在“ uniqid”列中从6到7个字符中提取子字符串,用它来创建行/列索引(“ ind”),从“ Age”列和“ Sex”列中以及cbind
第一列中提取相应的元素数据集。
ind <- cbind(1:nrow(df1), as.numeric(substr(df1$uniqid, 6,7)))
Age <- df1[grep("Age", names(df1))][ind]
Sex <- df1[grep("Sex", names(df1))][ind]
df2 <- cbind(df1[1], Age, Sex)
df2
# uniqid Age Sex
#1 1012501 9 1
#2 1012502 7 2
#3 1012503 5 1
#4 1012601 8 2
#5 1012602 5 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句