我有一个数据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 NAuniqid的前五个号码是家庭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 values.The数据帧有2095个583个变量。我需要一个循环吗?我能做什么?
发布于 2016-09-20 10:52:42
我们提取'uniqid‘列中6到7个字符的子字符串,使用它创建行/列索引('ind'),从'Age’列和‘性别’列中提取相应的元素,并使用数据集的第一列提取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 1https://stackoverflow.com/questions/39592131
复制相似问题