您的位置:首页 > 其它

R语言,一些数据操作

2011-08-31 15:46 225 查看
我们首先创建一些向量

> 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,后面的语句依次执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐