奈何我只想做一条安静的咸鱼——R语言初始2
咸鱼翻身的第2次更新
写于:北京记录:现在是:2020年5月11日 0:18前言:可以说是昨天是第一次更新,然后下午看了两章R语言的内容,因为之前学习过python,有一定的代码基础,学习期R语言来不是那么的费劲,而且我给自己现阶段的定位就是先把R语言学会到可以简单的处理数据的程度就好了,做所有的事情都要先完成在完美。大部分人做事情都是死于做事情的过程中太要求完美主义了,到时时间太久,坚持力又不够,最终自己定下的目标夭折。其实先完成在完美大家很早就听人说过吧,但是无奈自己做事情希望尽心尽力的做好然后才会有成就感,但是这样需要你综合能力很强,不然很难做到,导致虎头蛇尾。我坚信所以的产品都是妥协的结果,设计产品的人都不是傻子,但是为什么设计出那么多鸡肋的产品呢,原因可能比你想象的更加复杂,好了我要去睡觉了,晚安~
学习内容:
R语言最好使用rstudio的包因为有人维护,而且运行速度快还稳定
#查看数据
使用reader包
安装R语言的包
install.package(reader)
#调用R语言包
library(reader)
#要注意的是读取的编码
#读取csv
r1 <- read_csv(path)
#数据导出,使用ggplot2,也是rtudio的包
方法1:
install.package(ggplot2)
library(ggplot2)
write_csv(r1,path)#这个是rstudio的包
方法2:r自带的方法
write.csv(r1,
fileEnconding='UTF-8',
row.name=FALSE,#相当于索引
)
读取Excel
方法1:
install.package(readxl)
library(readxl)
r1<-read_xlsx(path='',sheet='')
r1<- readxl :: read_xlsx(path='',
sheet='')
方法2:r自带的方法 不推荐所以就不介绍了,哈哈哈!
因为读取时候经常产生问题
其他文件读取
读取sas,spss等
使用包haven
install.package(haven)
library(haven)
spss
r1<- read_sav(path)
r2<- read_dta(path)
r3<- read_sas(path)
4时间复杂度,空间复杂度(这块比较记得比较着急,后续再更新)
想起来了,
时间复杂度就是运行代码所消耗的时间,我们的原则是越快越好;
空间复杂度就是写的代码越简单越好;
system.time(a<-reader::read_csv(path))
system.time(a<-read.csv(path,encoding='UTF-8',header=TRUE,sep=',')
从网络中获取数据
这里指的是连接外部数据库
安装包
Install.packages(c('DBI','RSQLite','RMySQL','RPostgreSQL'))
CON<- dbConnect(RSQLite::SQLite,':memory:')
dbListTables(con)#这个就是查看数据库中的表
dbWriteTable(con,'mtcars',macars)#建立一个新的表名字叫‘mtcars’,数据是macars
dbListTables(con)#查看数据库
dbWriteTable(con,'Tianic',as.data.frame(Tianic))
dbListTables(con)##查看数据库
dbDisconnect()#断开数据库
#连接MySQL,与上面相似但是不一样
library(RMySQL)
CON<- dbConnect(RMySQL::MySQL(),
dbname="course",
username="root",
password="123456")
dbsendQuery(con_c,'SET NAMES GBK')
dbListTables(con)##查看数据库;如果出现中文乱码,请使用上面的代码
dbGetQuery(con_c,'select * from table')#数据筛选
#创建新表
dbWriteTable(con_c,'table_name',ggplot2::diamonds,row.names=FALSE,overwrite=TRUE)
#row.names=FALSE 就是是否要索引
#overwrite=TRUE 就是当数据库中有相同名字的表时,要不要覆盖掉历史的
dbWriteTable(数据库连接,'表名',数据集,row.names=FALSE,overwrite=TRUE)
过滤和筛选操作
install.packages('dblyr')#怎么记忆这个表名呢database library of R
library(dblyr)
#管道操作pipe %>%
#使用数据集
install.package('nycflights13')
nycflights::flights%>%head()#查看前6行数据
nycflights::flights%>%View()#查看全部数据
#过滤函数:filter
library('nycflights13')
library (dblyr)
filter(flights,month==1,day==1)
filter(数据集,针对变量筛选条件)
r1 <- filter(dataset,month==12,day==15)
(r1 <- filter(dataset,month==12,day==15))
#外面嵌套一层括号可以实现即存储在View中也在输出框中显示
比较运算
filter(flights,dep_delay>120)%>%count() #计算个数
filter(flights,dep_delay>120,arr_delay>120)#双条件
filter(flights,(dep_delay>120|arr_delay>120))#与或非条件
包含缺失记录筛选
df <- tibble(x==c(1,NA,3))
df %>% filter(X>1|is.na(x))
library(bdlyr)
sub_mtcars <- head(mtcars,10)#显示前10行
#默认升序排列
sub_mtcars%>% arrange(cyl,gear)%>% View()
#翻译:sub_mtcars然后排序(按cyl和gear排序)然后全部显示
#默认降序排列
sub_mtcars%>% arrange(desc(cyl),gear)%>% View()
#第一个变量降序,第二个变量升序
df <- tibble(x=c(5,2,NA),y=c(1,'b',99))#使用tibble格式
arrange(df,x)
arrange(df,desc(x))
arrange(df,is.na(x))
arrange(df,desc(is.na(x)))
(4)对选择变量重命名
iris%>%as_tibble()%>%rename(p_length=petal.length,s_length=sepel.Length)
(5)添加新的变量:mutate()
mutate(
flights_sml,
gain=arr_delay-dep_delay,
speed=distance/air_time)
#注意上面不赋给数据集则会产生在console里面
#如果上面赋给一个变量则会产生在原数据集后面
#如果只想展示创建的几个变量那么可以使用transmute函数
transmute(flights,gain=arr_delay-dep_delay,hours=air_time/60,gain_per_hour=gain/hours)
#求余数 251%%100 =1
#求商的整数 251%/% 100=2
点击原文可以进入我的博客,感兴趣的可以看一下~