全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
19538 7
2016-02-17
在很多时候,我们要处理数据框中的一些数据,并将在某一范围内的数据赋予一个值,或是字符值或是因子,这个时候
使用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
>


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-2-18 10:18:10
require(dplyr)
leadership %>% mutate(agecat=ifelse(age>75,"elder", ifelse(age>=55,"middle age","young")))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-2-18 10:47:27
stzhao 发表于 2016-2-18 10:18
require(dplyr)
leadership %>% mutate(agecat=ifelse(age>75,"elder", ifelse(age>=55,"middle age","you ...
这里主要介绍一下within函数
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-7-28 14:15:02
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-10-23 22:33:19
感谢楼主分享!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-1-18 14:48:16
请教:在expression部分,新增变量时在变量名前需要加“+”号么?另外在分组的逻辑判断之间如何换行?已经试过直接回车,分号,逗号,都报错呀。求教
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群