R语言,一些数据操作

我们首先创建一些向量

> manager <- c(1,2,3,4,5)
> date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08", "5/1/08")
> contry <- 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)
> 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, contry, gender, age, q1, q2,q3,q4,q5, stringsAsFactors=FALSE)

> leadership
  manager     date contry gender age q1 q2 q3 q4 q5
1       1 10/24/08     US      M  32  5  4  5  5  5
2       2 10/28/08     US      F  45  3  5  2  5  5
3       3  10/1/08     UK      F  25  3  5  5  5  2
4       4 10/12/08     UK      M  39  3  3  4 NA NA
5       5   5/1/08     UK      F  99  2  2  1  2  1

这样我们就得到了一个类似于表的数据帧,但是这个数据结构有更丰富的操作接口:

如果我们把age为99的全部清理成为未知(NA),我们不需要像在其他语言中那样写for循环、判断、修改,我们只需要这样

> leadership$age[leadership$age == 99] <- NA

> leadership
  manager     date contry gender age q1 q2 q3 q4 q5
1       1 10/24/08     US      M  32  5  4  5  5  5
2       2 10/28/08     US      F  45  3  5  2  5  5
3       3  10/1/08     UK      F  25  3  5  5  5  2
4       4 10/12/08     UK      M  39  3  3  4 NA NA
5       5   5/1/08     UK      F  NA  2  2  1  2  1

此时,age为99的已经被清理成NA,达到了我们的目的。下面,我们可以通过同样地方式来对一些数据做一些概念上的分类:

> leadership$agecat[leadership$age > 75] <- "Elder"
> leadership$agecat[leadership$age >= 55 & leadership$age <=75] <- "Middle Aged"
> leadership$agecat[leadership$age <55] <- "Young"
> leadership
  manager     date contry gender age q1 q2 q3 q4 q5 agecat
1       1 10/24/08     US      M  32  5  4  5  5  5  Young
2       2 10/28/08     US      F  45  3  5  2  5  5  Young
3       3  10/1/08     UK      F  25  3  5  5  5  2  Young
4       4 10/12/08     UK      M  39  3  3  4 NA NA  Young
5       5   5/1/08     UK      F  NA  2  2  1  2  1   <NA>

我们可以使用下面的方式达到同样目的,不过更简洁:

> leadership <- within(leadership, {agecat <- NA
+ agecat[age>75] <- "Elder"
+ agecat[age>=55 & age <= 75] <- "Middle Aged"
+ agecat[age < 55] <- "Young"
+ }
+ )
> leadership
  manager     date contry gender age q1 q2 q3 q4 q5 agecat
1       1 10/24/08     US      M  32  5  4  5  5  5  Young
2       2 10/28/08     US      F  45  3  5  2  5  5  Young
3       3  10/1/08     UK      F  25  3  5  5  5  2  Young
4       4 10/12/08     UK      M  39  3  3  4 NA NA  Young
5       5   5/1/08     UK      F  NA  2  2  1  2  1   <NA>
>

within 函数和with函数类似,不过,within允许你修改数据帧。首先,agecat被创建,并且初始化数据帧中的每条记录为NA,后面的语句依次执行。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值