R语言快速入门主线知识点分享

0、Rstudio界面介绍及快捷键

运行当前/选中行 ctrl+enter

中止运行 esc

插入 <- Alt+-

插入 %>% Ctrl+Shift+M

快捷注释(支持多行选中)ctrl+shift+c 快捷注释后,如取消注释ctrl+shift+c

Rstudio自动补全 tab

x <- 5

1、生成数据

set.seed(0)
set.seed(1)
c()
seq() #生成等差数据
rep() #重复生成数据
rep(1:10,2)
factor() #因子数据

语法 factor(x = character(), levels, labels = levels,…)

补充cut

x <- c("Man", "Male", "Man", "Lady", "Female")

Map from 4 different values to only two levels:

xf <- factor(x, levels = c("Male", "Man" , "Lady", "Female"),
labels = c("Male", "Male", "Female", "Female"))

> [1] Male Male Male Female Female

> Levels: Male Female

x <- c("Man", "Male", "Man", "Lady", "Female")

Map from 4 different values to only two levels:

xf <- factor(x, levels = c("Male", "Man" , "Lady", "Female"),
labels = c("1", "1", "2", "2"))

[1] 1 1 1 2 2

Levels: 1 2

######## cut分段
x <- round(rnorm(100)*100,digits = 2)
x_cut <- cut(x,breaks = seq(-100,100,length.out = 11))
x_group_count <- table(cut(x,breaks = seq(-100,100,length.out = 11)))

paste() #连接字符 paste0 无空格连接
paste("A","B","C")
paste0("A","B","C")

> paste("A","B")

[1] "A B"

> paste("A","B","C")

[1] "A B C"

> paste0("A","B","C")

[1] "ABC"

sample() # 抽样

2、数据类型

vector # 向量(数值型、字符型、逻辑型) #单一向量中必须拥有同一类型
matrix矩阵
matrix(1:12,nrow = 3) #等效matrix(1:12,ncol = 4)
matrix(1:12,ncol = 4)
matrix(1:12,nrow = 3,byrow = TRUE)

data.frame # 数据框
tibble #一种data.frame
x <- matrix(1:12,nrow = 3,byrow = TRUE)
df <- data.frame(x)
as.matrix(df) # 转换为matrix数据
is.data.frame(x) # 判断是否欸data.frame类型
array # 数组
list列表
list(x,df)

3、读存数据(read、save)

3.1设置工作目录【很重要】

setwd("E:/") #设置当前工作目录为"E:/"
getwd() #读取当前工作空间的工作目录(文件读取保存路径)

read.table() #读取带分隔符的文本/数据文件
read.csv() #读取.csv格式的数据,read.table的一种特定应用
df <- read.csv("da.csv",header = T, stringsAsFactors= T)
str(df)

excel数据文件读取 .XLS .xlsx

install.packages("readxl")

library(readxl)
df <- read_excel("da.xlsx",sheet=1)

保存为.Rdata

write.table()
write.csv(df,"dfx.csv") # .csv格式导出

4、数据操作 查询、引用、增删(合并)、排序、dplyr tidyr

###########数据概况 str() summary() class()

x <- matrix(1:12,nrow = 3,byrow = TRUE)
df <- data.frame(x)
str(df)
summary(df)

> str(df)

'data.frame': 3 obs. of 4 variables:

$ X1: int 1 5 9

$ X2: int 2 6 10

$ X3: int 3 7 11

$ X4: int 4 8 12

> summary(df)

X1 X2 X3 X4

Min. :1 Min. : 2 Min. : 3 Min. : 4

1st Qu.:3 1st Qu.: 4 1st Qu.: 5 1st Qu.: 6

Median :5 Median : 6 Median : 7 Median : 8

Mean :5 Mean : 6 Mean : 7 Mean : 8

3rd Qu.:7 3rd Qu.: 8 3rd Qu.: 9 3rd Qu.:10

Max. :9 Max. :10 Max. :11 Max. :12

############ 引用 ############
x[1,4] # 值引用 x[行索引,列索引]

行/列引用 x[行索引,] 或x[,列索引]

x[1,] # 引用第一行
x[,4] # 引用第一列
x[2:3,2:3] # 行列混合引用(矩阵) x[行初始索引:行终止索引,列初始索引:列终止索引]

> x[1,4] # 值引用 x[行索引,列索引]

[1] 4

> # 行/列引用 x[行索引,] 或x[,列索引]

> x[1,] # 引用第一行

[1] 1 2 3 4

> x[,4] # 引用第一列

[1] 4 8 12

> x[2:3,2:3] # 行列混合引用(矩阵) x[行初始索引:行终止索引,列初始索引:列终止索引]

[,1] [,2]

[1,] 6 7

[2,] 10 11

names(df)[5] <- "testNAME" # 列重命名(二位数据框,变量)names()

############ (多)数据(关联)合并 ############
cbind(x,matrix(1:nrow(x),ncol = 1)) # 将x 与 matrix(1:nrow(x),ncol = 1) 按列合并

S3 method for class 'data.frame'

merge(x, y, by = intersect(names(x), names(y)),
by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
sort = TRUE, suffixes = c(".x",".y"), no.dups = TRUE,
incomparables = NULL, ...)

rbind(x,rep("A",ncol(x))) # 向数据集中增加行
join #补充学习多数据关联匹配-join相关 https://mp.weixin.qq.com/s/EAJe0EXq2JWlTWEgREV5vw

############ 单元格、行列值(计算)修改(逻辑修改) ############
x <- matrix(1:12,nrow = 3,byrow = TRUE)
x
x[1,1] <- 100 #修改指定单元格
x[,2] <- 0 # 修改指定列
transform(airquality, Ozone = -Ozone) # 对原始列进行计算
transform(airquality, new = -Ozone, Temp = (Temp-32)/1.8) # 对原始列进行计算

> x <- matrix(1:12,nrow = 3,byrow = TRUE)

> x

[,1] [,2] [,3] [,4]

[1,] 1 2 3 4

[2,] 5 6 7 8

[3,] 9 10 11 12

> x[1,1] <- 100 #修改数据【修改指定单元格,修改指定列,with 关联修改】

> x

[,1] [,2] [,3] [,4]

[1,] 100 2 3 4

[2,] 5 6 7 8

[3,] 9 10 11 12

> x[,2] <- 0

> x

[,1] [,2] [,3] [,4]

[1,] 100 0 3 4

[2,] 5 0 7 8

[3,] 9 0 11 12

############ 排序&去重 补充学习https://mp.weixin.qq.com/s/0D9TyYqETCuIAWI0f_LvIQ

排序

sort # 单列排序返回值
order # 单列排序返回索引
rank # 单列排序返回“秩”
arrage # 多列排序
reorder # 用在绘图中

去重

unique # 单向量/多列完全重复去重
duplicated # 函数

############ 数据筛选(逻辑) 条件筛选、&、| 补充学习 《补充-R 语言 逻辑运算:TRUE_FALSE _ 专题3.pdf》

关于逻辑 可适当补充apply系列函数

& 和 且

TRUE & TRUE
TRUE & FALSE

| 或

TRUE | TRUE
TRUE | FALSE

xor异或:当对应元素不等时返回TRUE

xor(T,F) #返回TRUE
xor(T,T)
xor(F,F)

所有为真T,返回T

all(T,T)
all(T,F)

任意为真T,返回T

any(T,F)
any(F,F)

> # & 和 且

> TRUE & TRUE

[1] TRUE

> TRUE & FALSE

[1] FALSE

> # | 或

> TRUE | TRUE

[1] TRUE

> TRUE | FALSE

[1] TRUE

> #xor异或:当对应元素不等时返回TRUE

> xor(T,F) #返回TRUE

[1] TRUE

> xor(T,T)

[1] FALSE

> xor(F,F)

[1] FALSE

> # 所有为真T,返回T

> all(T,T)

[1] TRUE

> all(T,F)

[1] FALSE

> # 任意为真T,返回T

> any(T,F)

[1] TRUE

> any(F,F)

[1] FALSE

options(digits=3) # 设置有效数字
NA # 缺失值

dplyr包 的下述五个函数用法

filter # 筛选:
arrange # 排列:
select # 选择:
mutate # 变形:
summarise # 汇总:
group_by #分组:

示例 分组汇总计算

data("iris")
str(iris)
library(dplyr)
iris %>%
group_by(Species) %>%
summarise(mean_Petal.Length = mean(Petal.Length),
yangbenshu = n(),
max_Petal.Length = max(Petal.Length))

> library(dplyr)

> iris %>%

+ group_by(Species) %>%

+ summarise(mean_Petal.Length = mean(Petal.Length),

+ yangbenshu = n(),

+ max_Petal.Length = max(Petal.Length))

# A tibble: 3 x 4

Species mean_Petal.Length yangbenshu max_Petal.Length

<fct> <dbl> <int> <dbl>

1 setosa 1.46 50 1.9

2 versicolor 4.26 50 5.1

3 virginica 5.55 50 6.9

tidyr包 的下述四个函数用法

gather # 宽数据转为长数据:(excel透视表反向操作)
spread # 长数据转为宽数据:(excel透视表功能)
unit # 多列合并为一列:
separat # 将一列分离为多列

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

推荐阅读更多精彩内容