基本数据类型包括:数值型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")
#看到时候自己需要哪个就改为哪个格式就行,都是字符串,不用遵循日期或时间格式

r语言 xml json 转换器 r语言中数据类型转换_r语言