最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

R語言學習筆記

2022-08-24 14:33 作者:拖著床的不二  | 我要投稿

數(shù)據(jù)導入

寫法1:“文件名稱”,如果不寫路徑,是會在當前路徑下讀取,可用getwd()獲取當前路徑??捎胹etwd(“路徑”)修改當前路徑。
寫法2:絕對路徑\文件名稱,比如“D: \…\test.xlsx”。
寫法2:“clipboard”,利用復制,然后讀取? 【x <- import("clipboard", header = T)】

#讀取txt數(shù)據(jù)

read.table("file.txt",?header=T)? #導入txt文本文件

#讀取excel數(shù)據(jù)

library(readxl)? #加載程序包,讀取.xlsx數(shù)據(jù)

cjb <- read_excel("E:/R語言/R語言學習/data/cjb.xlsx") #讀取數(shù)據(jù)

#讀取.csv數(shù)據(jù)

df <- read.csv("產(chǎn)品銷售記錄表.csv",header=,row.name=,clo.name=,skip=)

header:是否使用數(shù)據(jù)文件的第一行作為列名

row.name:指定行名稱,可設置為FALSE

clo.name:指定列名稱,可設置為FALSE

skip:很多時候數(shù)據(jù)較為復雜是,可以指定是否跳過文件的前幾行讀取。

數(shù)據(jù)基本處理

is.na-判斷空值? ? ? ?is.na(x)? x:向量??

test =c('Hello', 'World',NA, 1,? 2, 3)?

is.na(test)

test[! is.na(test)] #去除test中NA值

union-計算并集? ? ?union(x,y)? ? ?x, y:向量

union(1:4,2:5)#示例

union(1:4,8:10)? ?# union只可以處理倆個向量,那如何計算多個向量的并集呢

union(1:4,union(2:5,8:10))? ?# 這個例子是想強調(diào):函數(shù)是可以疊加的,不同函數(shù)之間也是如此

intersect-計算交集? ? ? intersect(x,y)? ? ?x, y:向量

intersect(1:4,2:5)?

intersect(1:4,union(2:5,8:10))? ?#ips:先求并集,再求交集

setdiff-獲取左向量的特有元素? ? ?setdiff(x,y)? ?x, y:向量

setdiff(1:4,2:5)? ? ?結(jié)果 1

seq-生成數(shù)值型向量? ?seq(from,to,by=,length.out=)

from:起始數(shù)值? ? to:終止數(shù)值? ? ? by:序列間隔,默認為1? ?? length.out:將from-to區(qū)間劃分為多少份,可簡化為len

seq(1,9,by=3) # 生成1到9,以3為間隔的序列

seq(1,9,len=4) #將1到9的序列,劃分為4等份

sample-隨機抽取向量? ? sample(x,size,replace=FALSE)

x:待隨機抽取的向量 size:抽取的次數(shù),默認抽取length(x)次? replace:是否重復抽樣

sample(1:10,5,rep=T) # 從1:10序列中隨機放回抽取5次

?注意:? ? ? ??隨機抽取意味著運行兩次sample(1:10,5)得到的結(jié)果不一樣

? ? ? ? ? ? ? ? ? ?set.seed()可以重復隨機結(jié)果

? ? ? ? ? ? ? ? ? ?set.seed(1234) #括號里面的參數(shù)可以是任意數(shù)字,代表你設置的第幾號種子,不參與運算,是個標記。

? ? ? ? ? ? ? ? ? ?sample(1:10,5,rep=T)#重復兩次結(jié)果一樣

rep-重復向量? ? ?? rep(x,each,times)? ?

x:待重復的向量? ? each:每一個元素重復的次數(shù)? ? times:向量整體重復次數(shù)

rep(c(1,? 2, 3),2) # 向量整體重復2次

rep(c(1,? 2, 3),each=2) # 向量的每一個元素依次重復2次

rep(c(1,? 2, 3),1:3) # 向量的每一個元素重復不同次數(shù)?

rep(c(1,? 2, 3),each=2, times=3) #向量每一個元素重復2次,總共重復3次

rev-反向排列向量? ?rev(x)? ? ?x:待反向排列的向量

rev(1:4)? #結(jié)果4321

table-頻次統(tǒng)計? ? ?table(x)? ? x:待統(tǒng)計向量

table(c(1,2,2,4,7,1,1))? ? #結(jié)果?

sort-元素重排? ? ? sort(x, decreasing=FALSE)? ??

x: 待重排向量? ?decreasing: 降序排列,默認FALSE

order-求元素順序? ? ?order(x, decreasing=FALSE)? ??

x: 待排序向量? ? decreasing: 降序排列,默認FALSE)

order(c('b','e','a')) # 返回排序的坐標值? ? 結(jié)果 3 1 2

rank-求元素排名? ? ?rank(x)? ? x: 待求排名的向量

rank(c('b','e','a')) # 返回元素的排名? 結(jié)果 2 3 1

tolower/?toupper字符串小/大寫轉(zhuǎn)換? ? ?tolower(x) /toupper(x)? ? x: 待轉(zhuǎn)換字符串或字符串向量

sub-字符串替換? ?sub(pattern, replacement, x)? ?

pattern:待替換原始字符串模式? ?replacement:待替換目標字符串? ? x: 待轉(zhuǎn)換字符串或字符串向量

sub("a","A",c("abcda","adcba")) #只替換每次字符串的第1個匹配

gsub("a","A",c("abcda","adcba")) #替換所有匹配

sub('a$', 'A', c("abcda","adcba")) #只替換位于末尾的a

sub('b.*a','Box', c("abcda","adcba")) # 替換從b到a的字符

sub('b.','Box', c("abcda","adcba"))? # 替換b和其后一位的字符

sub('b.+','Box', c("abcda","adcba")) # 替換從b之后的所有字符

sub('l.*l','AAAA','Hello World') #貪婪匹配:匹配盡可能多的字符

sub('l.*?l','AAAA','Hello World') #懶惰匹配:匹配最短的字串

substr 字符串截取? substr(x, start, stop)? ??

x:待截取字符串或字符串向量? ? start:起始位置? ? stop:終止位置

substr('Hello World', 1, 4)#截取第一到第四個位置上的字符

strsplit? 字符串切割 strsplit(x, split)? ? x:待切割字符串或字符串向量? ? split:分隔符

strsplit("Hello World", ' ')? ? ? ? ? ? ? ? ?#? 返回列表形式??

unlist(strsplit('Hello World', ' '))? ?#Tips: strsplit返回結(jié)果形式為列表,可以通過unlist函數(shù)將列表轉(zhuǎn)化為向量

paste-字符串連接? paste(…,sep="",collapse=NULL)??

...:一個或多個R對象? sep:元素分隔符? collapse:字符串分隔符

paste('Hello','World',sep=', ')? ? ? #結(jié)果"Hello, World"

paste('Hello','World',1, 2, 3,sep='_!_ ')? ? ? ?#結(jié)果"Hello_!_ World_!_ 1_!_ 2_!_ 3"

paste(c('Hello','World'),c(1, 2, 3),sep=', ')? ? ? ?#結(jié)果?"Hello, 1" "World, 2" "Hello, 3"

paste(c('Hello','World'),c(1, 2, 3),sep=', ',collapse = '; ')? ? ? #結(jié)果?"Hello, 1; World, 2; Hello, 3"

match-整詞匹配? ? match(x,table)? ? x:待查詢值? ? table:匹配模板

match(c('Hi', 'Wor', 2, 1, 3),c('Hello', 'World', 1, 2, 3))? ? ?#結(jié)果?NA NA? 4? 3? 5

#Tips: match返回值為table中匹配x值的位置,沒有匹配上返回NA; %in% 類似match,但是返回值為邏輯值

c('Hi', 'Wor',? 2, 1, 3) %in% c('Hello', 'World', 1, 2, 3)? ? ?#結(jié)果FALSE FALSE? TRUE? TRUE? TRUE

grep關(guān)鍵字搜索? ?grep(pattern, x)? ?pattern:待搜索字符串模式? ? x: 待搜索字符串或字符串向量

grep('o',c('Hello', 'World', 1,? 2, 3))? ? ?# 返回匹配上的位置? ? ?結(jié)果? ?1 2

grepl('o',c('Hello', 'World', 1,? 2, 3))? ? # 返回邏輯值? ? ? ?結(jié)果? TRUE? TRUE FALSE FALSE FALSE

?Tips: match為整詞匹配,grep為關(guān)鍵字匹配;match第一個參數(shù)可以是向量,grep第一個參數(shù)只能是字符;match不能使用正則,grep可以使用正則

na.omit? 刪除含有空值的行? ?na.omit(df)? ? df:數(shù)據(jù)框

apply? 數(shù)據(jù)框循環(huán)? ?apply相比較for循環(huán),可以提高運算效率

apply(X, MARGIN, FUN...)? ? X:數(shù)組、矩陣、數(shù)據(jù)框? ? MARGIN:1表示按行,2表示按列? ? FUN:調(diào)用函數(shù)

head(airquality)? ?#? airquality是R內(nèi)置的示例數(shù)據(jù)集

apply(head(airquality), 1, mean)? ? #按行計算均值

subset-數(shù)據(jù)框截取? subset可以根據(jù)自定義條件截取數(shù)據(jù)框子集? ?subset(x,...,select)?

? x: 數(shù)據(jù)框? ? ...: 條件選擇,主要針對行操作? select: 條件選擇,主要針對列操作

head(airquality)? ?? # airquality是R內(nèi)置的示例數(shù)據(jù)集

head(subset(airquality,Temp > 80, select = c(Ozone,Temp)))? ? #選擇 Temp>80的行,并且只展示Ozone和Temp列

head(subset(airquality, Day == 1, select = -Temp))? ? ?? #選擇Day=1的行,并且刪除Temp列

split-數(shù)據(jù)框拆分? ? split可以根據(jù)某一列(因子型)將數(shù)據(jù)框拆分為不同子集

split(x, f)? ? x: 數(shù)據(jù)框? ? f: 因子型列表

head(iris) # iris為R內(nèi)置數(shù)據(jù)集

class(iris$Species)? ? ?#? ? ? ?查看數(shù)據(jù)類型? ? ? ? ? ? Species列為因子型

levels(iris$Species)? ? # 查看Species的類別

split(iris,iris$Species)??#? iris數(shù)據(jù)框集按species拆分? ?

class(split(iris,iris$Species))? ?#?拆分后的數(shù)據(jù)類型為列表

names(split(iris,iris$Species)) # 拆分后的列表名稱

head(split(iris,iris$Species)[['versicolor']]) # 查看拆分后的versicolor子集

merge-數(shù)據(jù)框合并? ?merge可以根據(jù)列名合并兩個不同的數(shù)據(jù)框??

merge(x, y, by = intersect(names(x), names(y)),? by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all)? ?

x,y 要合并的兩個數(shù)據(jù)集

by,用于連接兩個數(shù)據(jù)集的列,intersect(a,b)值向量a,b的交集,names(x)指提取數(shù)據(jù)集x的列名?

by = intersect(names(x), names(y)) 是獲取數(shù)據(jù)集x,y的列名后,提取其公共列名,作為兩個數(shù)據(jù)集的連接列, 當有多個公共列時,需用下標指出公共列,如names(x)[1],指定x數(shù)據(jù)集的第1列作為公共列?

也可以直接寫為 by = ‘公共列名’ ,前提是兩個數(shù)據(jù)集中都有該列名,并且大小寫完全一致,R語言區(qū)分大小寫

by.x,by.y:指定依據(jù)哪些行合并數(shù)據(jù)框,默認值為相同列名的列? ?默認根據(jù)數(shù)據(jù)框列名自行判斷

all,all.x,all.y:指定x和y的行是否應該全在輸出文件? ?默認僅輸出非空行

sort:by指定的列(即公共列)是否要排序

suffixes:指定除by外相同列名的后綴

incomparables:指定by中哪些單元不進行合并

df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)), Taste=c(rep("Sweet", 3), rep("bitter", 3))); df1

df2 = data.frame(CustomerId = c(2, 4, 7), State = c(rep("Alabama", 2), rep("Ohio", 1)), Flavour=c(rep("Sweet", 3), rep("bitter", 3))); df2

df3 = data.frame(CustomerId = c(1, 4, 7), Product = c("Toaster","Alabama", "Ohio")); df3

merge(x=df1, y=df2)? ?#默認根據(jù) df1 、df2相同列 CustomerID進行合并

merge(x=df1, y=df3)? #默認根據(jù) df1、 df3相同列 CustomerID、Product進行合并

merge(df1, df3, by="CustomerId")? #指定根據(jù)df1、df3相同列CustomerID進行合并

head(merge(df1, df2, by.x="Taste", by.y="Flavour")) #指定根據(jù)df1的Taste列、df2的Flavour列進行合并

merge(x=df1, y=df3, by="CustomerId", all=T) #指定根據(jù)df1、df3相同列CustomerID進行合并,輸出所有內(nèi)容

merge(x=df1, y=df3, by="CustomerId", all.x =T) #指定根據(jù)df1、df3相同列CustomerID進行合并,輸出df1所有內(nèi)容

merge(x=df1, y=df3, by="CustomerId", all.y = T) #指定根據(jù)df1、df3相同列CustomerID進行合并,輸出df3所有內(nèi)容

#Tips:

#is.na也可以判斷數(shù)據(jù)框空值

is.na(merge(x=df1, y=df3, by="CustomerId", all.y = T))

#complete.cases可以判斷數(shù)據(jù)框某一列是否全部為非空值

complete.cases(merge(x=df1, y=df3, by="CustomerId", all.y = T))

# na.omit可以刪除空行

na.omit(merge(x=df1, y=df3, by="CustomerId", all.y = T))

aggregate(x, by, FUN, ..., simplify = TRUE, drop = TRUE)

aggregate函數(shù)應該是數(shù)據(jù)處理中常用到的函數(shù),簡單說有點類似sql語言中的group by,可以按照要求把數(shù)據(jù)打組聚合,然后對聚合以后的數(shù)據(jù)進行加和、求平均等各種操作。

#我們常用到的參數(shù)是:x, by, FUN。 x, 你想要計算的屬性或者列。 by, 是一個list,可以指定一個或者多個列作為分組的基礎(chǔ)。 FUN, 指定一個函數(shù),用來計算,可以作用在所有分組的數(shù)據(jù)上面。

R語言學習筆記的評論 (共 條)

分享到微博請遵守國家法律
唐山市| 栾川县| 莱西市| 诸城市| 湖北省| 象山县| 盐池县| 拉萨市| 慈利县| 开原市| 唐山市| 宝山区| 托克逊县| 香格里拉县| 太保市| 宁夏| 叙永县| 周口市| 鄂托克前旗| 盐池县| 东丽区| 合川市| 巴彦淖尔市| 蒙城县| 嘉义市| 来凤县| 锡林浩特市| 镇江市| 治多县| 沂南县| 高台县| 松阳县| 乐山市| 体育| 政和县| 思南县| 应用必备| 泉州市| 鹤峰县| 昆山市| 景德镇市|