《R语言实战》学习笔记---Chapter4(5) 基础数据管理
2023-08-12 本文已影响0人
RSP小白之路
类型转换
R中提供了一系列用来判断某个对象的数据类型和将其转换为另一种数据类型的函数。
- 类型转换函数
判断 | 转换 |
---|---|
is.numeric() | as.numeric() |
is.character() | as.character() |
is.vector() | as.vector() |
is.matrix() | as.matrix() |
is.data.frame() | as.data.frame() |
is.factor() | as.factor() |
is.logical() | as.logical() |
is.datatype()
这样的函数返回TRUE
或FALSE
,而as.datatype()
这样的函数则将其参数转换为对应的类型。
is.datatype()
这样的函数将是强大的工具,和控制流结合使用时,允许根据具体数据类型以不同方式处理数据。
as.datatype()
函数可以让你在分析之前先行将数据转换为要求的格式。
数据排序order
函数
在R中, 可以使用order()
函数对一个数据框进行排序。默认的排序顺序是升序。 在排序变量的前边加一个减号即可得到降序的排序结果。
依然以管理者服从度信息数据为例进行数据集排序的说明。
manager <- c(1, 2, 3, 4, 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)
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, stringsAsFactors=FALSE)
> print(leadership )
manager date country 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/09 UK F 99 2 2 1 2 1
- 1. 根据年龄升序排序
newdata1 <- leadership[ order(leadership$age),]
> print(newdata1 )
manager date country gender age q1 q2 q3 q4 q5
3 3 10/1/08 UK F 25 3 5 5 5 2
1 1 10/24/08 US M 32 5 4 5 5 5
4 4 10/12/08 UK M 39 3 3 4 NA NA
2 2 10/28/08 US F 45 3 5 2 5 5
5 5 5/1/09 UK F 99 2 2 1 2 1
- 2. 根据女性到男性、同性别按年龄升序排序
attach(leadership)
newdata2 <- leadership[order(gender, age),]
detach(leadership)
> print(newdata2)
manager date country gender age q1 q2 q3 q4 q5
3 3 10/1/08 UK F 25 3 5 5 5 2
2 2 10/28/08 US F 45 3 5 2 5 5
5 5 5/1/09 UK F 99 2 2 1 2 1
1 1 10/24/08 US M 32 5 4 5 5 5
4 4 10/12/08 UK M 39 3 3 4 NA NA
- 3. 根据女性到男性、同性别按年龄降序排序
attach(leadership)
newdata2 <- leadership[order(gender, -age),]
detach(leadership)
> print(newdata2)
manager date country gender age q1 q2 q3 q4 q5
5 5 5/1/09 UK F 99 2 2 1 2 1
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
1 1 10/24/08 US M 32 5 4 5 5 5