R語言基礎(chǔ)之第一部分 5種數(shù)據(jù)對象類型

北京時間:2019年8月25日 15:27 天氣:晴朗 作者:多美麗

前記:

  • 這兩天學習英語學到懷疑人生,愣是被學英語的焦慮給搞到睡不著,所以下床學了點R給壓壓驚。以后當個走路睡覺吃飯都在thinking of 英語的潔妮吧。不然雅思怎么7分噢。
  • 今天邊學習R寫這個文章,在用R做過那么多次分析建模之后,發(fā)現(xiàn)自己是一枚R基礎(chǔ)小白。所以趕緊在慕課拾掇起來看了課程,現(xiàn)在就把學到的記錄以此鞏固吧。

正文:

  • 說實話,我是現(xiàn)在才發(fā)現(xiàn)打基礎(chǔ)是很重要的,在建模堆里摸爬滾打了這么多次,每次在遇到些小問題的時候,就暴露了自己基本功不扎實,對矩陣數(shù)組列表都不夠熟悉,使用其他函數(shù)其實對數(shù)據(jù)的格式類型要求挺多的,就比如我連基本的數(shù)據(jù)分析排序 分類就不知道怎么用,每次還得求助SAS,這就很.....了。So now, let's move to our learning of R Basics.

部分:5種數(shù)據(jù)對象類型

1.1 向量(vector)

x1 = vector("character",length = 10)     #創(chuàng)建空向量,向量里的值為字符型
x2 = 1:4    #創(chuàng)建連續(xù)型數(shù)值向量時很方便
x3 = c(2,3,5,6)   #創(chuàng)建指定的數(shù)值向量很方便
x4 = c(TRUE,10,"a")   #向量內(nèi)容雜七雜八時,默認強制轉(zhuǎn)換為字符型
names(x2)= c("a","b","c","d")   #給向量命名,向量也要擁有姓名啊哈哈哈哈哈我之前就從來沒給過她名分

1.2 矩陣(matrix)
向量+維度屬性(nrow ncol)

x1 = matrix(nrow = 3, ncol = 2)   #創(chuàng)建3行2列的空矩陣
x2 = matrix(1:6, nrow = 3, ncol = 2)   #創(chuàng)建了內(nèi)容是1到6的矩陣 需要說明的是,數(shù)字按列排
dim(x2)   #查看矩陣x2的維度
attributes(x2)   #查看矩陣x2的屬性,在不了解x2里有啥屬性的時候,用這個就很讓人清楚

y1 = 1:6
dim(y1) = c(3,2)   #把向量y1創(chuàng)建成矩陣了 和上面x2一樣的效果
y2 = matrix(11:16, nrow = 3, ncol = 2)
rbind(y1,y2)   #按行合并
cbind(y1,y2)   #按列合并
#rbind cbind只要要合并的矩陣兩者行數(shù)或列數(shù)不一致,就無法合并。所以要保證二者行列相等哦

1.3 數(shù)組(array)
與矩陣相似,但維度可大于2(說白了元素都是數(shù) 維度隨便設(shè))

x1 = array(1:24, dim = c(4,6))   #4行6列的數(shù)組
x2 = array(1:24, dim = c(2,3,4))   #2行3列,但有4個這樣的
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12

, , 3

     [,1] [,2] [,3]
[1,]   13   15   17
[2,]   14   16   18

, , 4

     [,1] [,2] [,3]
[1,]   19   21   23
[2,]   20   22   24

1.4 列表(list)
可以包含不同類型

l1 = list("a", 2, 10L, 3+4i, TRUE)   #容得下任何類型,每個屬性內(nèi)容互補干涉,可同一類型,可不同類型
l2 = list(a = 1, b = 1, c = 3)  #列表里的3個屬性名稱依次是a b c
l3 = list(c(1,2,3), c(4,5,6,7))
x = matrix(1:6,2,3)
dimnames(x) = list(c("a","b"), c("c","d","e"))   #用list函數(shù)成功給矩陣命名

1.5 因子(factor)
整數(shù)向量+標簽

x1 = factor(c("female", "male", "female", "male", "female"))    #把向量設(shè)為因子型
x2 = factor(c("female", "male", "female", "male", "female"), levels = c("male","female"))    #levels的設(shè)置告知male為基線水平,誰在前誰就是基線,在建模時候經(jīng)常用到
table(x1)
x1
female   male 
     3      2 

unclass(x1)        #去掉因子屬性,看屬性內(nèi)容
[1] 1 2 1 2 1
attr(,"levels")
[1] "female" "male" 

1.6 缺失值(missing value)
NA:各種類型的缺失值
NAN:數(shù)值型的缺失值
NAN 屬于 NA
is.na 和 is.nan 判斷向量中是否有缺失值

x = c(1, NA, 2, NA, 3)
is.na(x)
[1] FALSE  TRUE FALSE  TRUE FALSE
is.nan(x)
[1] FALSE FALSE FALSE FALSE FALSE

1.7 數(shù)據(jù)框(data.frame)
存儲表格數(shù)據(jù),視為各元素長度相同的列表

df1 = data.frame(id = c(1,2,3,4), name = c("a","b","c","d"), order = c(TRUE, TRUE, FALSE, TRUE))
  id name order
1  1    a  TRUE
2  2    b  TRUE
3  3    c FALSE
4  4    d  TRUE

df2 = list(id = c(1,2,3,4), name = c("a","b","c","d"), order = c(TRUE, TRUE, FALSE, TRUE))
$id
[1] 1 2 3 4

$name
[1] "a" "b" "c" "d"

$order
[1]  TRUE  TRUE FALSE  TRUE

df3 = data.frame(id = c(1,2,3,4), score = c("81", "60", "15", "100"))
data.matrix(df3)  # **若數(shù)據(jù)框全為數(shù)值,則可用該函數(shù)轉(zhuǎn)換為矩陣**

1.8 日期與時間(date, time)
日期

x1 = date()   #獲取系統(tǒng)日期和數(shù)據(jù)
class(x1)
[1] "character"

x2 = Sys.Date()   #獲取系統(tǒng)日期
class(x2)
[1] "Date"

x3 = as.Date("2015-01-01")   #格式必須包含年月日三者且用-或者/分隔
quarters(x3)   #獲取日期所在季度
months(x3)   #獲取日期所在月份
weekdays(x3)   #獲取日期所在星期
julian(x3)   #距離1970-01-01的天數(shù)
x4 = as.Date("2019-05-01") 
x4 - x3   #和SAS一樣,日期是可以相減的,因為日期代表的是距離1970-01-01的天數(shù)
Time difference of 1581 days    #結(jié)果顯示為文字型
as.numeric(x4 - x3)     #強制得到數(shù)值結(jié)果
[1] 1581

時間
POSIXct 整數(shù) 常用于存入數(shù)據(jù)框
POSIXIt 列表 還包括年月日等信息

x = Sys.time()
[1] "2019-08-25 18:18:28 CST"
class(x)
[1] "POSIXct" "POSIXt" 

p = as.POSIXlt(x)
[1] "2019-08-25 18:18:28 CST"
class(p)
[1] "POSIXlt" "POSIXt"      #Xct轉(zhuǎn)換成了Xlt
unclass(p)       #unclass 以后出現(xiàn)了很多p的信息,因為轉(zhuǎn)換成了POSIXlt,是列表,包括很多信息
$sec
[1] 18.25399

$min
[1] 24

$hour
[1] 18

$mday
[1] 25

$mon
[1] 7

$year
[1] 119

$wday
[1] 0

$yday
[1] 236

$isdst
[1] 0

$zone
[1] "CST"

$gmtoff
[1] 28800

attr(,"tzone")
[1] ""    "CST" "CDT"
names(unclass(p))     #去掉屬性 內(nèi)容留下
 [1] "sec"    "min"    "hour"   "mday"   "mon"    "year"   "wday"   "yday"   "isdst" 
[10] "zone"   "gmtoff"

y = "Jan 1,2015 01:01"
strptime(y, "%B %d,%Y %H:%M")     #此處耍寶失敗 若您知曉原因 請告知噢
[1] NA      

后續(xù)請參考:
R語言基礎(chǔ)之第部分 : 操縱數(shù)據(jù)取子集
R語言基礎(chǔ)之第部分:重要函數(shù)apply族函數(shù)的使用
R語言基礎(chǔ)之第部分 : 排序
R語言基礎(chǔ)之第部分 : 總結(jié)數(shù)據(jù)信息

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容