參考書籍:《R語言醫(yī)學(xué)數(shù)據(jù)分析實(shí)戰(zhàn)》
數(shù)據(jù)結(jié)構(gòu)
向量
# 創(chuàng)建向量
x1 <- c(1,2,3,4,5) #數(shù)值型
x2 <- c("one","two","three") #字符型
x3 <- c(TRUE,FALSE,TRUE,TRUE) #邏輯型
# 創(chuàng)建有規(guī)律的向量
x4 <- 1:5
x5 <- seq(from = 2, to = 10, by = 2)
x6 <- rep("a", times = 4)
x7 <- paste("a", 1:5) #還有 paste0
# 去除指定位置的元素
x1[-(1:2)]
# R中的運(yùn)算都是向量化的
x1 + x5
# 常見統(tǒng)計(jì)函數(shù)
length(x1)
mean(x1)
var(x1)
因子
# 因子類型轉(zhuǎn)換
sex <- c(1,2,1,1,2,1,2)
sex.f <- factor(sex, levels = c(1,2), labels = c("Male", "Female"))
# 查看因子屬性
levels(sex.f)
# [1] Male Female Male Male Female Male Female
# Levels: Male Female
# 統(tǒng)計(jì)模型中应狱,R會(huì)將第一個(gè)水平當(dāng)作參考組
# 改變因子水平的排列順序->改變參考組
# 方法1:改變levels和labels順序壶运,注意:要同時(shí)改粱锐!
sex.f <- factor(sex, levels = c(2,1), labels = c("Female", "Male"))
# 方法2:函數(shù)relevel()
sex.f1 <- relevel(sex.f,ref = "Female")
# 表示有序因子:ordered=TRUE
status <- c(1,2,2,3,1,2,2)
status.f <- factor(status, levels = c(1,2,3),
labels = c("Poor","Improved","Excellent"),
ordered = TRUE)
status.f
# [1] Poor Improved Improved Excellent Poor Improved Improved
# Levels: Poor < Improved < Excellent
矩陣
# 創(chuàng)建矩陣
M <- matrix(1:6,nrow = 2)
M
# 將數(shù)值按照行排列
M <- matrix(1:6,nrow = 2, byrow = T)
M
# 矩陣乘法
mat1 <- matrix(1:6, nrow = 3)
mat1
mat2 <- matrix(5:10, nrow = 2)
mat2
dim(mat1) #得到矩陣維數(shù)
mat1 %*% mat2
# 轉(zhuǎn)置運(yùn)算
t(mat1)
# 行列式和逆矩陣
mat3 <- matrix(1:4, nrow = 2)
det(mat3)
solve(mat3)
# 按行/列求平均/和
rowSums(mat1)
rowMeans(mat1)
# 訪問元素
mat1[1:2, 1:2]
數(shù)組
# 創(chuàng)建數(shù)組
A <- 1:24
dim(A) <- c(3,4,2)
A
# 創(chuàng)建數(shù)組
dim1 <- c("A1","A2","A3")
dim2 <- paste0("B",1:4)
dim3 <- paste0("C",1:2)
array(1:24, dim = c(3,4,2), dimnames = list(dim1, dim2, dim3))
列表
# 創(chuàng)建列表
list1 <- list(a = 1, b = 1:5, c = c("red", "blue", "green"))
list1
list1$a
數(shù)據(jù)框
ID <- 1:5
sex <- c("male","female","male","female","male")
age <- c(25,34,38,28,52)
pain <- c(1,3,2,2,3)
pain.f <- factor(pain, levels = 1:3, labels = c("mild", "medium", "severe"))
patients <- data.frame(ID,sex,age,pain.f)
patients
patients$ID
數(shù)據(jù)類型的判斷與轉(zhuǎn)換函數(shù)
小總結(jié)
1.列表和數(shù)據(jù)框都用$引用對(duì)象或變量
2.在R中放典,數(shù)組和矩陣差不多,只不過矩陣是2維的唯卖,而數(shù)組的維數(shù)通常大于2
3.創(chuàng)建數(shù)據(jù)框的時(shí)候經(jīng)常用data.frame把幾個(gè)向量“拼起來”
數(shù)據(jù)獲取
小練習(xí)
> # 2-2
> #先生成數(shù)字型酥,再轉(zhuǎn)換為字母:LETTERS大寫,letters小寫
> x <- letters[seq(1,10)]
> x
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
> y <- seq(1:10)
> y
[1] 1 2 3 4 5 6 7 8 9 10
> z <- rep(1,10)
> z
[1] 1 1 1 1 1 1 1 1 1 1
> data <- data.frame(x,y,z)
> data
x y z
1 a 1 1
2 b 2 1
3 c 3 1
4 d 4 1
5 e 5 1
6 f 6 1
7 g 7 1
8 h 8 1
9 i 9 1
10 j 10 1
# 2-3
library(survival)
str(lung)
head(lung)
# 2-4
data <- rnorm(1000,mean = 168, sd = 10)
hist(data)
# 2-5
data("iris")
str(iris)
write.csv(iris,"iris.csv")
data.csv <- read.csv("iris.csv",header = T)
head(data.csv)
str(data.csv)