一、基本数据类型
1. R语言的基本数据类型
包括:数值型、逻辑型、字符型、缺省值、浮点型、复数型、整数型等。
表1 基本数据类型的判别与转换
类型 |
判别函数 |
转换函数 |
numeric |
is.numeric() |
as.numeric() |
logical |
is.logical() |
as.logical() |
character |
is.character() |
as.character() |
NA |
is.na() |
as.na() |
double |
is.double() |
as.double() |
complex |
is.complex() |
as.complex() |
integer |
is.integer() |
as.integer() |
例1 数据类型的判别与转换
2.查看对象的类型
函数Class()/typeof()/mode(),基本格式相同:
class(x)
其中x为要查看的对象。
注:在展现数据的细节上,mode()<class()<typeof()
二、日期时间变量
1. 日期值通常以字符串形式传入R中,然后转化为以数值形式存储的日期变量。
注意:R的内部日期是以1970年1月1日至今的天数来存储,内部时间则是以1970年1月1日至今的秒数来存储。
读取系统当前日期时间的函数(注意大小写):
(1) Sys.Date()——返回系统当前的日期
(2) Sys.time()——返回系统当前的日期和时间
(3) date()——返回系统当前的日期和时间(字符串形式)
2. 日期时间转化函数
(1)字符串型日期变量转化为日期变量
函数as.Date(),基本格式为:
as.Date(x,format=" ",...)
其中,x为字符串型日期值,format指定日期格式。
表2 日期时间格式
日期时间格式 |
含义 |
示例 |
%d |
数字表示的日期(00~31) |
01~31 |
%a |
缩写的星期名 |
Mon |
%A |
非缩写的星期名 |
Monday |
%w |
数字表示的星期几 |
0~6(0为周日) |
%m |
数字表示的月份(00~12) |
00~12 |
%b |
缩写的月份 |
Jan |
%B |
非缩写的月份 |
January |
%y |
二位数的年份 |
16 |
%Y |
四位数的年份 |
2016 |
%H |
24小时制小时(00~23) |
00~23 |
%I |
12小时制小时(01~12) |
01~12 |
%p |
AM/PM指示 |
AM/PM |
%M |
十进制分钟(00~60) |
00~60 |
%S |
十进制秒(00~60) |
00~60 |
注意:as.Date()只能转化包含年月日星期的字符串,无法转化具体到时间的字符串。
例2 将字符型日期转化为日期变量
(2) 字符串日期时间变量转化为时间变量
函数as.POSIXlt()与as.POSIXct(),前者为“字符串式”存储,后者为“整数(秒数)”存储,基本格式为:
as.POSIXlt(x,tz=" ", format)
as.POSIXct(x,tz=" ", format)
其中,x为字符串型日期时间值,tz指定转化后的时区(" "为当前时区,“GMT”为格林尼治标准时也是协调世界时UTC的俗称,“CST”为中国标准时即北京时间);format指定日期时间格式
例3 将字符串形式的日期时间值转化为时间变量
> t<-"2016-07-28 11:15:47"
> as.POSIXlt(t,tz="", "%Y-%m-%d %H:%M:%S")
[1] "2016-07-28 11:15:47 CST"
注意:日期年月日与时间时分秒之间有空格。
(2) 字符串日期时间变量转化为时间变量
函数strptime(),功能同as.POSIXlt(),格式稍有差别,基本格式为:
strptime(x,format,tz=" ")
例如,对例3中的变量t有
> strptime(t,"%Y-%m-%d %H:%M:%S",tz="")
[1] "2016-07-28 11:15:47 CST
(2) 日期时间变量转化为字符串日期时间值
函数strftime(),功能与strptime()相反,基本格式为:
strftime(x,format=" ")
例如,将上述时间变量记为time,有
> strftime(time,format="%Y/%m/%d")
[1] "2016/07/28"
(3) 将对象按指定格式转化为字符串
函数format(),基本格式为:
format(x,format)
其中,x为要转化为字符串的对象,format指定转化格式。
例如,使用前面的变量time,有
> format(time,"%d/%m/%Y")
[1] "28/07/2016"
注意:函数format()不局限于转化日期变量,也可以转化其他类型的变量。