R语言基础之第一部分 5种数据对象类型

北京时间:2019年8月25日 15:27 天气:晴朗 作者:多美丽

前记:

  • 这两天学习英语学到怀疑人生,愣是被学英语的焦虑给搞到睡不着,所以下床学了点R给压压惊。以后当个走路睡觉吃饭都在thinking of 英语的洁妮吧。不然雅思怎么7分噢。
  • 今天边学习R写这个文章,在用R做过那么多次分析建模之后,发现自己是一枚R基础小白。所以赶紧在慕课拾掇起来看了课程,现在就把学到的记录以此巩固吧。

正文:

  • 说实话,我是现在才发现打基础是很重要的,在建模堆里摸爬滚打了这么多次,每次在遇到些小问题的时候,就暴露了自己基本功不扎实,对矩阵数组列表都不够熟悉,使用其他函数其实对数据的格式类型要求挺多的,就比如我连基本的数据分析排序 分类就不知道怎么用,每次还得求助SAS,这就很.....了。So now, let's move to our learning of R Basics.

部分:5种数据对象类型

1.1 向量(vector)

x1 = vector("character",length = 10)     #创建空向量,向量里的值为字符型
x2 = 1:4    #创建连续型数值向量时很方便
x3 = c(2,3,5,6)   #创建指定的数值向量很方便
x4 = c(TRUE,10,"a")   #向量内容杂七杂八时,默认强制转换为字符型
names(x2)= c("a","b","c","d")   #给向量命名,向量也要拥有姓名啊哈哈哈哈哈我之前就从来没给过她名分

1.2 矩阵(matrix)
向量+维度属性(nrow ncol)

x1 = matrix(nrow = 3, ncol = 2)   #创建3行2列的空矩阵
x2 = matrix(1:6, nrow = 3, ncol = 2)   #创建了内容是1到6的矩阵 需要说明的是,数字按列排
dim(x2)   #查看矩阵x2的维度
attributes(x2)   #查看矩阵x2的属性,在不了解x2里有啥属性的时候,用这个就很让人清楚

y1 = 1:6
dim(y1) = c(3,2)   #把向量y1创建成矩阵了 和上面x2一样的效果
y2 = matrix(11:16, nrow = 3, ncol = 2)
rbind(y1,y2)   #按行合并
cbind(y1,y2)   #按列合并
#rbind cbind只要要合并的矩阵两者行数或列数不一致,就无法合并。所以要保证二者行列相等哦

1.3 数组(array)
与矩阵相似,但维度可大于2(说白了元素都是数 维度随便设)

x1 = array(1:24, dim = c(4,6))   #4行6列的数组
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)   #容得下任何类型,每个属性内容互补干涉,可同一类型,可不同类型
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函数成功给矩阵命名

1.5 因子(factor)
整数向量+标签

x1 = factor(c("female", "male", "female", "male", "female"))    #把向量设为因子型
x2 = factor(c("female", "male", "female", "male", "female"), levels = c("male","female"))    #levels的设置告知male为基线水平,谁在前谁就是基线,在建模时候经常用到
table(x1)
x1
female   male 
     3      2 

unclass(x1)        #去掉因子属性,看属性内容
[1] 1 2 1 2 1
attr(,"levels")
[1] "female" "male" 

1.6 缺失值(missing value)
NA:各种类型的缺失值
NAN:数值型的缺失值
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 数据框(data.frame)
存储表格数据,视为各元素长度相同的列表

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)  # **若数据框全为数值,则可用该函数转换为矩阵**

1.8 日期与时间(date, time)
日期

x1 = date()   #获取系统日期和数据
class(x1)
[1] "character"

x2 = Sys.Date()   #获取系统日期
class(x2)
[1] "Date"

x3 = as.Date("2015-01-01")   #格式必须包含年月日三者且用-或者/分隔
quarters(x3)   #获取日期所在季度
months(x3)   #获取日期所在月份
weekdays(x3)   #获取日期所在星期
julian(x3)   #距离1970-01-01的天数
x4 = as.Date("2019-05-01") 
x4 - x3   #和SAS一样,日期是可以相减的,因为日期代表的是距离1970-01-01的天数
Time difference of 1581 days    #结果显示为文字型
as.numeric(x4 - x3)     #强制得到数值结果
[1] 1581

时间
POSIXct 整数 常用于存入数据框
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转换成了Xlt
unclass(p)       #unclass 以后出现了很多p的信息,因为转换成了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))     #去掉属性 内容留下
 [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      

后续请参考:
R语言基础之第部分 : 操纵数据取子集
R语言基础之第部分:重要函数apply族函数的使用
R语言基础之第部分 : 排序
R语言基础之第部分 : 总结数据信息

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