亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

R語言基礎

  • 4-3 mapply

    mapply:lapply的多元版本? mapply(參數):mapply(函數/函數名,數據,函數相關的參數)

    例:list(rep(1,4),rep(2,3),rep(3,2),rep(4,1))(第1個元素是4個1,第2個元素是3個2)

    ? ? ? ?mapply(rep,1:4,4:1)(元素是1到4,4:1規定了前面元素要重復多少次)

    定義函數:? s<-function(n,mean,std){rnorm(n,mean,std)}(從隨機分布的總體里抽取指定個數的數據)(花括號中意義是從均值為mean,標準差為std的總體里抽取n個數據)

    調用函數:s(4,0,1)(從均值為0,標準差為1的正態分布總體里調用4個數據)

    mapply(s,1:5,5:1,2)(1:5對應的4,即每一次抽取多少個數據出來,5:1對應的0,即分布的均值,2即為分布的標準差)

    ?同上面的命令:list(s(1,5,2),s(2,4,2),s(3,3,2),s(4,2,2),s(5,1,2))

    查看全部
  • 4-2R語言函數 apply

    apply:沿著數組的某一維度處理數據

    例如:將函數用于矩陣的行或列

    雖然與for/while循環效率相似,但是只用一句話就可以完成

    apply(參數):apply(數組,維度,函數/函數名)

    例:1.x<-matrix(1:16,4,4)

    ? ? ? ? ?apply(x,2,mean)(對x求列的平均)

    ? ? ? ? ?apply(x,2,sum)

    相同于:rowSums(x)? rowMeans(x)

    ? ? ? ? ? ? ? colSums(x)? ?colMeans(x)

    ? ? ? ?2.x<-matrix(rnorm(100),10,10)(隨機從正態分布的總體里抽取100個數據)

    ? ? ? ? ? apply(x,1,quantile,probs=c(0.25,0.75))(求25%和75%的百分位點所對應的數據)

    ? ? ? ?3.x<-array(rnorm(2*3*4),c(2,3,4))(三維數據,維度是2,3,4,第3維是4,即有4個2行3列的矩陣)

    ? ? ? ? ? apply(x,c(1,2),mean)(在第1維和第2維組成的平面上,沿著第4維進行求平均)

    ? ? ? ? ??apply(x,c(1,3),mean)

    ? ? ? ? ??apply(x,c(2,3),mean)

    查看全部
    0 采集 收起 來源:R語言函數 apply

    2021-09-25

  • 第4章 重要函數的使用

    4-1 R語言函數 lapply

    處理循環:R不僅有for/while循環語句(特點:需要些多行代碼),還有更強大的實現循環的“一句話”函數。

    排序

    總結數據信息

    lapply:可以循環處理列表中的每一個元素??

    ? ? ? ? ? ?lapply(參數):lapply(列表,函數/函數名,其他參數)

    ? ? ? ? ? ?結果:總是返回一個列表

    例:1.str(lapply)(其作用是把任意的R對象以一種整潔緊湊的形式顯示出來)

    ? ? ? ? ? x<-list(a=1:10,b=c(11,21,31,41,51))

    ? ? ? ? ? lapply(x,mean)

    ? ? ? ? 2.x<-1:4(在lapply內部,會強制轉化為列表)

    ? ? ? ? ? ?lapply(x,runif)(從均勻分布的總體里抽取若干個數,默認從0到1之間抽取)

    ? ? ? ? ? ?lapply(x,runif,min=0,max=100)(從0到100之間抽?。?/p>

    ? ? ? ? 3.x<-list(a=matrix(1:6,2,3)),b=matrix(4:7,2,2)

    ? ? ? ? ? ?lapply(x,function(m)m[1,])(m為匿名函數,對x中的每一個矩陣都取出它第1行的元素)

    sapply:與lapply非常相似,它可以在允許的情況下對lapply的結果進行化簡。結果列表元素長度均為1,返回向量;結果列表長度相同且大于1,返回矩陣;其他情況與lapply相同。

    例:? ?x<-list(a=1:10,b=c(11,21,31,41,51))

    ? ? ? ? ? lapply(x,mean)

    ? ? ? ? ? sapply(x,mean)


    ? ? ??

    查看全部
  • 3-6向量化操作

    向量化操作(vectorized operation):可以作用于向量、矩陣等結構,使得代碼簡潔、易于閱讀、效率高。

    例:x<-1:5

    ? ? ? ?y<-6:10

    ? ? ? ?x+y

    ? ? ? ?x*y

    ? ? ? ?x/y

    x<-matrix(1:4,nrow=2,ncol=2)

    y<-matrix(rep(2,4),nrow=2,ncol=2)(把第1個參數重復第2個參數指定的次數)

    x*y

    x/y

    x%*%y(矩陣乘以矩陣)

    查看全部
    0 采集 收起 來源:向量化操作

    2021-09-24

  • 3-5處理缺失值

    x<-c(1,NA,2,NA,3)

    is.na(x)

    x[!is.na(x)] (取x中不是缺失值的部分,!的意思是取反,即真變假)

    x<-c(1,NA,2,NA,3)

    y<-c("a","b",NA,"c"NA)

    z<-complete.cases(x,y)(運行之后x和y都不是缺失值的位置才會是TRUE)

    然后x[z]? y[z]就可以拿到都不是缺失值的元素

    進一步看complete函數的功能:

    首先加載一下數據集所在的包? ?library(datasets)

    head(airquality)(看一下數據集)

    通常情況下會選擇都沒有缺失值的變量? g<-complete.cases(airquality)

    airquality[g,][1:10,](得出的結果是沒有缺失值的)

    查看全部
    0 采集 收起 來源:處理缺失值

    2021-09-24

  • 3-4列表的子集

    構建列表的子集:[[]]/$/[[]][]/[[]][[]]

    ? ? ? ? ? ? ? ? ? ? ? ? ? ?嵌套列表/不完全匹配(partial matching)

    1.x<-list(id=1:4,height=170,gender="male")

    ? ?x[1](列表中的第1個元素) = x["id"]

    ? ?x[[1]](只拿到內容 而不是元素名稱加內容)=x[["id"]] = x$id

    ? ?y<-"id"

    ? ?x[["id"]]=x[[y]] 但不可以直接x$y

    2.x<-list(a=list(1,2,3,4),b=c("Monday","Tuesday"))

    x[[1]]? ? ? ? x[[1]][[2]](x第1個元素中第2個元素的內容)

    x[[c(1,3)]](拿到第1個元素中的第2個元素)

    x[[c(2,2)]](拿到第2個元素中的第2個元素)

    不完全匹配:

    l<-list(asdfghj=1:10)

    l$asdfghj=l$a(這就是列表的不完全匹配)

    l[["a"]](精確匹配 結果顯示NULL)

    l[["a",exact=FALSE]](后面的函數就關掉了精確匹配)

    x<-list(asdfghj=1:10,b=1:2,aaa=3:5)(當元素名稱會造成混淆時R會返回NULL)




    查看全部
    1 采集 收起 來源:列表的子集

    2021-09-24

  • 3-3數據框的子集

    x<-data.frame(v1=1:5,v2=6:10,v3=11:15)

    x$v3[c(2,4)]<-NA(把v3列的第2個和第4個定義成了缺失值)

    x[,2]數據框中的第2列 = x[,"v2"]

    x[(x$v1<4&x$v2>=8),]

    x[x$v1>2,]

    x[which(x$v1>2),](which是給出哪些是真)

    查看全部
    0 采集 收起 來源:數據框的子集

    2021-09-24

  • 3-2矩陣的子集

    構建子集:

    x<-matrix(1:6,nrow=2,ncol=3)

    x[1,2](想拿到第1行第2列的元素)? ? x[2,3](拿到第2行第3列的元素 )

    x[1,](拿到1整行的數據)? x[,1](拿到1整列的數據)

    x[2,c(1,3)](拿到第2行第1列和第3列的元素)

    class(x[1,2])? ?得到的是向量類型

    x[1,2,drop=FALSE](drop=FLASE函數幫我們關掉了返回向量,返回的是一個矩陣)

    查看全部
    0 采集 收起 來源:矩陣的子集

    2021-09-24

  • 第3章 操縱數據:構建子集(subsetting)

    3-1基本方法

    原始數據(raw dataset)——預處理后的數據(clean dataset)

    基本方法:

    1. []:提取一個或多個類型相同的元素

    2. [[]]:從列表或數據框中提取元素

    3. $:按名字從列表或數據框中提取元素

    補充:R語言的數組下表是從1開始而不是0開始

    例:x<-1:10? ? x[1] (拿到x的第1個元素)? x[1:5] (拿到x的前5個元素)? ?x[x>5] (拿大于5的元素)

    x[x>5&x<7]? ? ? x[x<3|x>7]

    y<-1:4

    names(y)<-c("a","b","c","d")? ?y[2]? ?y["b"](都是拿到y的第2個元素)

    查看全部
    1 采集 收起 來源:基本方法

    2021-09-24

  • 2-8日期與時間

    日期與時間(date,time)

    日期:Date

    x<-date()(獲取當前系統的時間)

    x2<-Sys.Date()(獲取R中date日期類型的數據)

    x3<-as.Date("2021-09-18")(如何把任意一個日期存儲為Date這種類型)

    weekdays(x3)(日期為星期幾)

    months(x3)(日期是幾月)

    quarters(x3)(日期為一年中哪個季度)

    julian(x3)(日期距離1970-01-01有多少天)

    x4<-as.Date("2016-01-01")

    x4-x3(兩個日期的時間差) as.numeric(x4-x3)

    時間:POSIXct/POSIXlt

    POSIXct:整數,常用于存入數據框

    POSIXlt:列表,還包含星期、年、月、日等信息

    x<-Sys.time()(獲取當前系統的時間)

    p<-as.POSIXlt(x)(類型之間的轉換)

    names(unclass(p))(lt的類型中存了哪些變量,使用unclass,把內容留下 把屬性去掉)

    p$sec(看一下有多少秒 秒是變量之一)

    如何把以不同格式表示的字符串轉換成我們想要的類型:

    例:x1<-"Jan 1, 2015 01:01"

    strptime(x1,"%B %d %Y %H:%M")

    查看全部
  • 2-7數據框

    數據框(data frame):存儲表格數據(tabular data),我們可以把數據框當成一種列表形式,其中各元素的長度是相同的(1.每個元素代表一列數據 2.每個元素的長度代表行數 3.元素類型可以不同)

    如何創建一個數據框:

    df<-data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,TRUE,FALSE,FALSE))(第一個參數代表第一列的內容,第二個參數代表第二列的內容)

    nrow(df)

    ncol(df)

    df2<-data.frame(id=c(1,2,3,4),score=c(80,86,90,100))

    data.matrix(df2)(將數據框轉化為矩陣)

    http://img1.sycdn.imooc.com//6144a67000013d7d10000421.jpg

    查看全部
  • 2-7數據框

    數據框(data frame):存儲表格數據(tabular data),我們可以把數據框當成一種列表形式,其中各元素的長度是相同的(1.每個元素代表一列數據 2.每個元素的長度代表行數 3.元素類型可以不同)

    如何創建一個數據框:

    df<-data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,TRUE,FALSE,FALSE))(第一個參數代表第一列的內容,第二個參數代表第二列的內容)

    nrow(df)

    ncol(df)

    df2<-data.frame(id=c(1,2,3,4),score=c(80,86,90,100))

    data.matrix(df2)(將數據框轉化為矩陣)

    查看全部
  • 2-6缺失值

    缺失值(missing value):NA/NaN

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NaN屬于NA,NA不屬于NaN,因為NaN一般用來表示數字的缺失值,而NA? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 可以表示的缺失值的類型更廣,如數字的缺失值,字符的缺失值等。此外,NA? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 是有類型屬性的:integer NA, character NA 等

    如果要判斷一個向量中是否有缺失值:is.na()/is.nan()

    例如:x<-c(1,NA,2,NA,3)

    ? ? ? ? ? is.na(x)

    ? ? ? ? ? is.nan(x)? 印證了x不屬于nan,也印證了NaN判斷不出NA

    ? ? ? ? ? x<-c(1,NaN,2,NaN,3)

    ? ? ? ? ? is.na(x)

    ? ? ? ? ? is.nan(x)

    查看全部
  • 2-5? factor

    因子(factor):分類數據(有序/無序)

    ? ? ? ? ? ? ? ? ? ? ? ? 可以理解為整數型向量+標簽(label)(優于整數向量)

    Male/Female vs.1/2

    常用于lm(),glm()

    創建因子:

    x<-factor(c("female","female","male","male","female"))

    y<-factor(c("female","female","male","male","female"),levels=c("male","female"))(levels是因子的屬性,誰在前誰是基線水平)

    table(x)對當前因子有整體性的了解

    unclass(x)去掉因子的屬性

    class(unclass(x))查看unclass(x)的屬性

    查看全部
  • 2-4列表

    列表(list):可以包含不同類型的對象

    創建列表:1.l<-list("a",2,10L,3+4i,TRUE)

    ? ? ? ? ? ? ? ? ?2.l2<-list(a=1,b=2,c=3)(給列表里的元素命名)

    ? ? ? ? ? ? ? ? ?3.l3<-list(c(1,2,3),c(4,5,6,7))(列表中每一個元素包含的元素大于1的列表)

    ? ? ? ? ? ? ? ? ?4.給矩陣的每一行每一列命名:

    ? ? ? ? ? ? ? ? ? x<-matrix(1:6,nrow=2,ncol=3)

    ? ? ? ? ? ? ? ? ? dimnames(x)<-list(c("a","b"),c("c","d","e"))

    查看全部

舉報

0/150
提交
取消
課程須知
本課程需要學員提前掌握 安裝好R和Rstudio
老師告訴你能學到什么?
1、R語言的數據結構 2、構建數據子集 3、重要函數的使用

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!