【R语言入门与数据分析-1】 R 基础变量类型

使用过程中发现自己的R语言基础太差了,回头补课。P15-P27
所学视频
https://www.bilibili.com/video/BV19x411X7C6?p=31&spm_id_from=pageDriver
面向纯小白的R语言入门,我看过的最棒教材。授课老师平平无奇的东北口音、该死的幽默,扶我起来,我还可以再肝!

内置数据集

help(package='datasets')
data()#列出所有data
rivers
data('rivers')
help('mtcars')
state <-data.frame(state.name, state.abb,state.area,state.division,state.region)
data(package = 'MASS')#列出MASS包中的所有数据集
data(package = .packages(all.available = TRUE))# 列出所有的可用数据集
data(Chile,package = 'carData')#只加载数据集,不加载R包
Chile

数据结构

  • R 数据类型
    数值型、字符串型、逻辑型、日期型
  • R 对象
    指可以赋值给变量的任何事物

向量

  • vector,是R中最重要的一个概念,构成其他数据结构的基础。用于存储数值型、字符型、逻辑型数据的一维数组
  • R中加引号,表明外面人的身份
  • 向量为同一类型
  • 向量化编程,很方便。R精髓所在,避免使用循环。R是统计学软件。

向量索引

  • 正整数索引【R中元素从1开始
  • 负整数索引【除了这个元素的其他所有元素
  • 逻辑判断
  • 元素名称【比较麻烦,不太常见
#逻辑判断
y <- c(1:10)
y[c(T,F,T,T,T,T)]#循环判断
#超过个数,产生缺失值
y[y>5]
y[y>5 & y < 9]
z<- c('one','two','three','four','five')
'one' %in% z
z %in% c('one','two')
# 元素名称
y <- 1:5
names(y) <- c('one','two','three','four','five')
y
  one   two three  four  five 
    1     2     3     4     5 

向量修改

v <- 1:3
v[c(4,5,6)] <- c(4,5,6)
v[20] <- 4
append(x= v, values = 99, after = 5)# 在第5个元素后面插入元素99
rm(v)
y <- y[-c(1:3)]# 负索引删除

向量运算

  • 数学运算
  • 逻辑判断
  • 包含运算
    x %in% y
#取整函数
ceiling()
floor()
trunc()
round()
signif()
#统计函数
sum()
max()
min()
range()
var()
range()
round()
sd()
prod()
median()
quantile()
#返回索引位置
t <- c(1,4,2,5,7,9,6)
which.max(t)
which(x == 7)

矩阵和数组

矩阵,matrix,按照长方阵列排列的复数/实数集合。

heatmap(state.x77)
x <- matrix(1:20,4,5)
m <- matrix(1:20,4,byrow = T)# 不加的话,默认按列排列
rnames <- c('r1','r2','r3','r4')
cnames <- c('c1','c2','c3','c4','c5')  
dimnames(m) <- list(rnames,cnames)
dim(x) <- c(4,5)

#数组
x <- 1:20
dim(x) <- c(2,2,5) 
?array
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))
z

矩阵索引、运算

m[i,j]

colSums()
rowSums()
colMeans()
rowMeans()
#内积,外积
diag(m)
t()#转置

列表

存储很多内容的一个集合。一些对象的有序集合,列表中可以存储若干向量、矩阵、数据框, 甚至其他列表的集合

  • 索引
state.center
a <- 1:20
b <- matrix(1:20,4)
c <- mtcars
d <- 'this is test list' 
mlist <- list(a,b,c,d)
names(mlist) <- c('one','two','three','four')
mlist$four
mlist[[1]]
mlist[1]
mlist[[2]] <- NULL# 清空
#也可以负索引

数据框

表格式的数据结构,与其他统计软件如SAS或SPSS中的数据集概念一致。数据集通常是由数据构成的矩形数组,行表示观测,列表示变量。
数据框实际上是列表,列表元素是向量,向量构成数据库的列。数据框列必须命名。

#一种方法
attach(mtcars) #加载数据框到R中,直接使用列名
mpg
detach(mtcars)
with(mtcars, {mpg})

因子

【R中很重要!】R中,名义型变量和有序型变量成为因子,factor。这些分类变量的可能值称为一个水平,level。由这些水平值构成的向量就称为因子。
名义型变量、有序型变量、连续型变量

table(mtcars$cyl)
week <- factor(c('Mon','Fri','Thu','Wed','Mon','Fri','Sun'),ordered = T, levels = c('Mon','Tue','Wed','Thu','Fri','Sat','Sun'))#有顺序了
week
fcyl <- factor(mtcars$cyl)
plot(mtcars$cyl) #散点图
plot(factor(mtcars$cyl))# 直方图
num <-1:100
cut(num,c(seq(0,100,10)))#连续型的也可以cut

缺失数据

NA代表缺失值,可以为任何值。缺失值会传染。
函数中,na.rm = TURE,忽略缺失值,将NA值移除,向量元素个数也相应减少。
is.na() 查看是否有NA
na.omit()应用于数据框,则包含NA的整行都被删除

处理缺失值包

NA, 存在,不知道多少
NaN 不可能的值,不存在
Inf 存在,无穷大/无穷小

字符串

image.png
nchar()#统计字符串长度
month.name
length(month.name)
nchar(month.name)
paste(c('Everybody','loves','stats'),sep = '-')

substr(x = month.name,start = 1, stop = 3)
toupper()
tolower()
?sub
?gsub#全局替换
gsub('^(\\w)','\\U\\1',tolower(month.name),perl = T)

> gsub('^(\\w)','\\U\\1',tolower(month.name))
 [1] "Ujanuary"   "Ufebruary"  "Umarch"     "Uapril"     "Umay"      
 [6] "Ujune"      "Ujuly"      "Uaugust"    "Useptember" "Uoctober"  
[11] "Unovember"  "Udecember" 
> gsub('^(\\w)','\\U\\1',tolower(month.name),perl = T)
 [1] "January"   "February"  "March"     "April"     "May"       "June"     
 [7] "July"      "August"    "September" "October"   "November"  "December"
> gsub('^(\\w)','\\L\\1',toupper(month.name),perl = T)
 [1] "jANUARY"   "fEBRUARY"  "mARCH"     "aPRIL"     "mAY"       "jUNE"     
 [7] "jULY"      "aUGUST"    "sEPTEMBER" "oCTOBER"   "nOVEMBER"  "dECEMBER"

> x <- c('b','A+','AC')
> grep('A+', x, fixed = T)#fixed 表示是否使用正则表达式
[1] 2
> grep('A+', x, fixed = F)
[1] 2 3

match() #类似于 %in%
strsplit()
path <- '/usr/local/bin/R'
strsplit(path,'/') #返回的是列表

?outer 
face <- 1:13
suit <- c('spades','clubs','hearts','diamonds')
outer(suit,face, FUN = paste)
outer(suit,face, FUN = paste,sep = '-')#生成扑克牌

paste(suit,face)
 [1] "spades 1"    "clubs 2"     "hearts 3"    "diamonds 4"  "spades 5"   
 [6] "clubs 6"     "hearts 7"    "diamonds 8"  "spades 9"    "clubs 10"   
[11] "hearts 11"   "diamonds 12" "spades 13"  
stringr 包

时间序列分析

airmiles
Sys.Date()
a <- '2021-01-01'
as.Date(a, format = '%Y- %m- %d')
class(as.Date(a, format = '%Y- %m- %d'))
strftime()# 日期格式转换
seq(as.Date('2021-01-01'), as.Date('2021-02-01'),by = 5)
ts
sales <- round(runif(48,min = 50, max = 100))
ts(sales, start = c(2010,5),end = c(2014,4), frequency = 4)# 1, 按年;4按季度;12 ,按月份。没有按天的
     Qtr1 Qtr2 Qtr3 Qtr4
2011   68   75   70   74
2012   52   85   70   59
2013   96   68   96   76
2014   60   63   60   70
> ts(sales, start = c(2010,5),end = c(2014,4), frequency = 1)
Time Series:
Start = 2014 
End = 2017 
Frequency = 1 
[1] 68 75 70 74

解决R错误

Google Rblogger,quickR,stackoverflow

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,392评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,258评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,417评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,992评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,930评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,199评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,652评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,327评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,463评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,382评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,432评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,118评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,704评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,787评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,999评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,476评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,057评论 2 341

推荐阅读更多精彩内容