R语言,一些数据操作
2011-09-15 18:46
549 查看
我们首先创建一些向量
> 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,后面的语句依次执行。
> 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,后面的语句依次执行。
相关文章推荐
- R语言中常用的Data Frame数据框操作!
- R语言Data Frame数据框常用操作
- python中的shelve模块,可以提供一些简单的数据操作
- 关于Oracle数据导入导出的一些操作
- R语言:常用数据格式及其操作
- --------------我的一些笔记(空间数据的操作)------------
- R语言Data Frame数据框常用操作
- 关于ListView的一些数据操作!(第2天)
- R语言最基础的入门知识 一些常用操作和例子
- Python机器学习中的实用小操作(一):数据清理篇 阿萨姆 2 个月前 0. 背景 很多朋友评论希望我共享答案和文章中提到的操作代码,比如生成相关性图谱等。为了方便大家,开始介绍一些虽然简单但很有用
- C++友元friend --c++利用friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作
- 关于datatable的一些操作以及使用adapter对数据的操作
- SQL Server Migration Assistant for MySQL(SSMA),数据迁移后的一些善后操作
- R语言-基础操作(批量数据读取和输出)
- 关于下拉列表加载数据的一些操作
- C++友元friend --c++利用friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作
- R语言︱词典型情感分析文本操作技巧汇总(打标签、词典与数据匹配等)
- Jquery 局部刷新及 表单取值赋值 处理返回json数据 一些基本操作
- R语言读取Excel和对数据框的操作
- R语言学习总结---数据操作