复杂的id变量列

时间:2015-05-12 12:17:01

标签: r

我是R的新手,并尝试创建一个新的变量作为家庭作业的一部分,任何帮助将不胜感激!

我有一个如下所示的数据集:

State    agegr
1         15-17
1         18-20
1         21-24
2         15-17
2         18-20
2         21-24

目前我已将状态作为ID列,但是我想修改它以便我有一个显示状态和年龄范围的ID列,如下所示:

State
1-15
1-18
1-21
2-15
2-18
2-21

并能够识别状态。

1 个答案:

答案 0 :(得分:1)

使用您的数据:

df <- data.frame(State=c(1,1,1,2,2,2), agegr=c('15-17','18-20','21-24','15-17','18-20','21-24'), stringsAsFactors=F );
df;
##   State agegr
## 1     1 15-17
## 2     1 18-20
## 3     1 21-24
## 4     2 15-17
## 5     2 18-20
## 6     2 21-24

以下是使用sub()paste()的方法:

data.frame(State=paste(df$State,sub('^(\\d+).*','\\1',df$agegr),sep='-'));
##   State
## 1  1-15
## 2  1-18
## 3  1-21
## 4  2-15
## 5  2-18
## 6  2-21

以下是使用strsplit()paste()的方法:

data.frame(State=paste(df$State,unlist(strsplit(df$agegr,'-'))[c(T,F)],sep='-'));
##   State
## 1  1-15
## 2  1-18
## 3  1-21
## 4  2-15
## 5  2-18
## 6  2-21