基本数据类型包括:数值型numeric、逻辑型logical、字符型character、缺省值NA、浮点型double、复数型complex、整数型integer等。
一:数据类型的判别与更改
(1) 数据类型的判别与转换
a<-1:10
is.numeric(a) #判别
is.integer(a)
b<-as.character(a);b #转换
is.character(b)
#判断会返回返回一个逻辑性数据,是为TRUE,否为FALSE
(2)函数class()/typeof()/mode()
class(a) #其中x为要查看的对象。
#class() / typeof() / mode() 都可
二:因子型变量
1:创建因子变量
(1)factor函数创建因子型变量(多用在字符型变量)
变量分为名义型、有序型、连续型(区间、比率)变量:名义型和有序型的类别变量叫做因子.(也就是分类变量)
#基本格式
factor(x, levels, labels=, exclude=, ordered=, nmax=)
ff<-factor(x=c("a","b","c","d","e"))
ff
#x :数据向量,也就是被转换成因子的向量
#levels指定因子的水平数,默认为x中不重复的所有值,相当于定义域
#labels设置各水平名称(前缀),为水平添加前缀,这样选出的因子也有了前缀(多为数字增添)
#例
factor(1:10,labels="let")
factor(LETTERS[3:1],ordered = TRUE) #按照26个英文排序,越靠后越大
#注:函数substring()用来提取字符串的子串,第2个参数是起始位置,第3个参数是终止位置;
letters和LETTERS是R中专有变量,表示26个小写/大写字母组成的字符向量。
(2)gl函数创建因子序列(多用在数值型因子变量)
gl(n, k, length=n*k, labels=seq_len(n), ordered=FALSE)
#n为因子数
#k为因子重复的次数
#length整个生成的序列长度(与n,k存在一定的数学关系,通过例子来看)
#labels转化为有标签的因子序列,名字可以自己设置但是数量一定要=n
#ordered是否排序
gl(3,2) #生成水平数为3,每个水平重复2次的因子序列
gl(2,3,labels=c("TRUE","FALSE")) #生成水平为“TRUE”和“FALSE”,每个水平重复3次的因子序列
gl(2,2,length=10) #生成水平数为2,序列长度为10的因子序列
gl(3,2,ordered=TRUE) #生成水平数为3,每个水平重复2次的有序因子序列
2:因子变量排序(字符型)
#对字符型向量创建的因子,会按照首字母顺序排序,再对应到整数型向量。
status<-c("Poor","Improved","Excellent","Poor")
status.factor<-factor(status,ordered=TRUE) #默认首字母排序
status.factor
#也可以自定义的进行排序
status <- factor(status, order=TRUE,levels=c("Poor","Excellent" "Improved" ))
#看level哪个在前就哪个的顺序在前
status
三:时间数据的处理
1:返回当前时间
Sys.Date() #返回系统当前的日期
Sys.time() #返回系统当前的日期和时间
date() #返回系统当前的日期和时间(字符串形式)
2:日期时间变量的转化
ps:日期和时间不一样,默认情况下,日期之前是以/或者-进行分隔,而时间则以:(冒号)进行分隔;
若日期和时间变量结合:日期 时间(先日期后时间,二者用一个空格隔开)
而时间的标准格式为:时:分 或者 时:分:秒;
(1.1)字符串型日期变量转化为日期变量
as.Date(x,format=" ",...) #该函数默认格式是yyyy-mm-dd(年月日)
#x为字符串型日期值
#format指定日期格式
day<-"07/28/2016" #创建字符串日期值
day
date<-as.Date(day,format="%m/%d/%Y") #转化为日期变量
date # "2016-07-28"
(1.2)日期变量转化为字符串型日期变量
today <- Sys.Date()
format(today, "%Y年%m月%d日")
#输出为"2022年04月03日"
(1.3)计算日期差:difftime()函数可以计算相关的秒数、分钟数、小时数、天数、周数
today <- Sys.Date()
gtd <- as.Date("2021-08-06")
difftime(today, gtd, units="weeks") #week参数还可根据需要改“secs”, “mins”, “hours”, “days”等
(1.4)提取日期信息
如果有一列时间变量,若有需要可以以下函数来形成新的变量。
weekdays() # 提取日期对象所处的周几
months() # 提取日期对象的月份
quarters() # 提取日期对象的季度
(2.1)字符串日期时间变量转化为时间变量
as.POSIXlt()与as.POSIXct() #strptime(x,format,tz=" ")与as.POSIXlt相似
as.POSIXlt(x,tz=" ", format) #以列表的形式存储:年、月、日、时、分、秒;,tz指定转化后的时区
as.POSIXct(x,tz=" ", format) #整数(秒数)存储
t<-"2016-07-28 11:15:47"
as.POSIXlt(t,tz="", "%Y-%m-%d %H:%M:%S")
(2.2)日期时间变量转化为字符串日期时间值
#strftime(x,format=" ")
strftime(t,format="%Y年%m月%d日")
strftime(t,format="%Y/%m/%d")
#看到时候自己需要哪个就改为哪个格式就行,都是字符串,不用遵循日期或时间格式