在很多时候,我们要处理数据框中的一些数据,并将在某一范围内的数据赋予一个值,或是字符值或是因子,这个时候
使用within函数是比较方便的。详见下面的例子:
#首先建立数据框
> manager<-c(1:5)
> date<-c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")
> country<-c("us","us","uk","uk","uk")
> gender<-c("M","F","F","M","F")
> age<-c(32,45,25,39,99)
> q1<-c(5,3,3,3,2)
> q2<-c(4,5,5,3,2)
> q2<-c(5,2,2,4,1)
> q3<-c(5,2,5,4,1)
> q4<-c(5,5,5,NA,2)
> q5<-c(5,5,2,NA,1)
> leadership<-data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringAsFactors=F)
> leadership#已经建好的数据框如下所示
manager date country gender age q1 q2 q3 q4 q5 stringAsFactors
1 1 10/24/08 us M 32 5 5 5 5 5 FALSE
2 2 10/28/08 us F 45 3 2 2 5 5 FALSE
3 3 10/1/08 uk F 25 3 2 5 5 2 FALSE
4 4 10/12/08 uk M 39 3 4 4 NA NA FALSE
5 5 5/1/09 uk F 99 2 1 1 2 1 FALSE
> leadership<-within(leadership,{#使用within(原来数据框,{分组条件})函数将年龄进行分组
+ agecat<-NA #先向数据框中增一列名为agecat,并全部赋值为NA。
+ agecat[leadership$age>75]<-"elder" #然后使用逻辑符号进行分组
+ agecat[leadership$age>=55&leadership$age<=75]<-"middle age"
+ agecat[leadership$age<55]<-"young"}
+ )
> leadership #分组好以后的数据框如下所示
manager date country gender age q1 q2 q3 q4 q5 stringAsFactors agecat
1 1 10/24/08 us M 32 5 5 5 5 5 FALSE young
2 2 10/28/08 us F 45 3 2 2 5 5 FALSE young
3 3 10/1/08 uk F 25 3 2 5 5 2 FALSE young
4 4 10/12/08 uk M 39 3 4 4 NA NA FALSE young
5 5 5/1/09 uk F 99 2 1 1 2 1 FALSE elder
>