首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与相应的性别和年龄相匹配。

与相应的性别和年龄相匹配。
EN

Stack Overflow用户
提问于 2016-09-20 10:48:59
回答 1查看 174关注 0票数 0

我有一个数据imcds来自一项调查,询问每个家庭中的每个人的性别和年龄信息给户主。所以户主是1人,其余人是2,3,4人。等等。因此:

代码语言:javascript
复制
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重塑为如下所示:

代码语言:javascript
复制
uniqid  Age  Sex  

1012501  9     1      
1012502  7     2      
1012503  5     1      
1012601  8     2      
1012602  5     1   

每个uniqid与其对应的SexAge values.The数据帧有2095个583个变量。我需要一个循环吗?我能做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-20 10:52:42

我们提取'uniqid‘列中6到7个字符的子字符串,使用它创建行/列索引('ind'),从'Age’列和‘性别’列中提取相应的元素,并使用数据集的第一列提取cbind

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39592131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档