《R语言实战》第二章代码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/starjuly/article/details/88368715
# 2.2.1 向量
# 数值型向量
a <- c(1, 2, 3, 4, -2, 6)
# 字符型向量
b <- c("one", "two", "three")
# 逻辑型向量
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)

# 访问向量
# 访问第几个元素
a[3]
a[c(1, 3, 5)]
# 等价于a <- c(2, 3, 4, 5, 6)。
a[2:6] 


# 2.2.2 矩阵
# 创建矩阵
y <- matrix(1:20, nrow = 5, ncol = 4)
# 定义矩阵向量数据
cells <- c(1, 26, 24, 58)
# 定义行名称
rnames <- c("R1", "R2")
# 定义列名称
cnames <- c("C1", "C2")
# 按行填充
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = TRUE,
                   dimnames = list(rnames, cnames))
# 按列填充
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = FALSE,
                   dimnames = list(rnames, cnames))
# 矩阵下标的使用
x <- matrix(1:10, nrow = 2)
# 显示第二行
x[2, ]
# 显示第二列
x[, 2]
# 显示第一行第四个元素
x[1, 4]
# 显示第一行第四、五列的元素
x[1, c(4, 5)]


# 2.2.3 数组
# 创建一个数组
dim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
z <- array(1:24, c(2, 3, 4),  dimnames = list(dim1, dim2, dim3))


# 2.2.4 数据框
# 创建一个数据框
patientID <- c(1, 2, 3, 4)
age <- c(25, 34, 28, 52)
diabetes <- c("Type1", "Type2", "Type1", "Type1")
status <- c("Poor", "Improved", "Excellent", "Poor")
patientdata <- data.frame(patientID, age, diabetes, status)
# 选取数据框中的元素
# 查看一二列的元素
patientdata[1:2]
# 通过名字查询
patientdata[c("diabetes", "status")]
# 通过$查询
patientdata$age

# 使用三个函数简化代码:attach()、detach()和with()
# 之前的写法
summary(mtcars$mpg)
plot(mtcars$mpg, mtcars$disp)
plot(mtcars$mpg, mtcars$wt)
# 可以写成以下方法
attach(mtcars)
  summary(mpg)
  plot(mpg, disp)
  plot(mpg, wt)
detach(mtcars)
# with:大括号{}之间的语句都针对数据框mtcars执行,这样就无须担心名称冲突 了。如果仅有一条语句(例如summary(mpg)),那么大括号{}可以省略
with(mtcars, {
  summary(mpg, disp, wt)
  plot(mpg, disp)
  plot(mpg, wt)
})
# <<-:建在with()结构以外存在的对象,使用特殊赋值符<<-替代标准赋值符(<-) 即可,它可将对象保存到with()之外的全局环境中
with(mtcars, {
  nokeepstats <- summary(mpg)
  keepstats <<- summary(mpg)
})
# nokeepstats: Error: object 'nokeepstats' not found
keepstats
# 实例标识符:实例标识 符(case identifier)可通过数据框操作函数中的rowname选项指定
patientdata <- data.frame(patientID, age, diabetes, status, row.names = patientID)


# 2.2.5 因子
diabetes <- factor(diabetes)
# 要表示有序型变量,需要为函数factor()指定参数ordered=TRUE
status <- factor(status, ordered = TRUE)
# 可以通过指定levels选项来覆盖默认排序
status <- factor(status, ordered = TRUE,
                 levels = c('Poor', 'Improved', 'Excellent'))


# 2.2.6 列表
g <- "My First List"
h <- c(25, 26, 18, 39)
j <- matrix(1:10, nrow = 5)
k <- c("one", "two", "three")
# 创建列表:列表允许整合若干(可能无关的)对象到单个对象名下。例如,某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。
mylist <- list(title = g, age = h, j, k)
mylist
# 查看age向量
mylist[[2]]
mylist[['age']]


# 2.3.1 使用键盘输入数据
mydata <- data.frame(age = numeric(0),
                     gender = character(0),weight = numeric(0))
mydata <- edit(mydata) # macos上要下载XQuartz才能使用
mydata

# 2.3.2 导入数据
grades <- read.table("studentgrades.csv", header = TRUE, sep = ",",
                     row.names = "STUDENTID")
#设置选项 stringsAsFactors=FALSE,这将停止对所有字符型变量的此种转换。另一种方法是使用选项colClasses为每一列指定一个类,例如logical(逻辑型)、numeric(数值型)、character (字符型)、factor(因子)


# 2.3.3 导入Excel数据
install.packages("readxl")
library(readxl)
# 1、path:文件存储路径及文件名(含扩展名),如Mac环境中输入为:/Users/aiqingjiel/Desktop/data1.xlsx
# 2、col_name=TURE:第一行为列字段名,如col_name=FALSE,R以X01,X02,……,Xn来代替列字段名;
# 3、col_type=NULL:导入的电子表格或向量中可能包含空白,数值,日期或text文本;
# 4、na=“”,默认讲点子表哥中空白单元格转换为缺失的值;
# 5、skip=0:在读取数据前,每行数据不回有遗漏
excel <- read_excel('/Users/moxingjian/Work/bingo/兰州地铁项目/机电模块问题.xlsx',
           sheet = 1, col_names = TRUE, col_types = NULL, na = '', skip = 0)

summary(excel)
example("read_excel")


# 值标签
patientdata$gender <- factor(patientdata$gender,
                      levels = c(1, 2),
                      labels = c("male", "female"))


# 2.5 处理数据对象的实用函数
# 显示对象中元素/成分的数量
length(patientdata)
# 显示某个对象的维度
dim(patientdata)
# 显示某个对象的结构
str(patientdata)
# 显示某个对象的类或类型
class(patientdata)
# 显示某个对象的模式
mode(patientdata)
# 显示某对象中各成分的名称
names(patientdata)
# 显示当前的对象列表
ls(patientdata)
# 编辑对象并另存为newobject
newobject <- edit(patientdata)
# 编辑对象并另存为newobject
fix(patientdata)
newobject

猜你喜欢

转载自blog.csdn.net/starjuly/article/details/88368715
今日推荐