我从一项调查中得到了一个数据框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
值。数据框有2095个583个变量。我需要循环吗?我能做什么?
答案 0 :(得分:0)
我们在' uniqid'中提取6到7个字符的子字符串。列,用于创建行/列索引(' ind'),从'年龄'中提取相应的元素。专栏和'性'列,以及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