3 基本数据管理
3.1 创建新变量
在一个数据框里面加入新的变量的方法有三种,第一种是直接$引用添加,一种是用attach()detach(),第三种是用transform()函数。具体例子如下:
#mydata里面已经存在x1和x2两个变量
#方法一
mydata$sumx<-mydata$x1+mydata$x2
mydata$meanx<-(mydata$x1+mydata$x2)/2
#方法二
attach(mydata)
mydata$sumx<-x1+x2
mydata$meanx<-(x1+x2)/2
detach(mydata)
#方法三
mydata<-transform(mydata,
sumx<-x1+x2,
meanx<-(x1+x2)/2)
3.2 变量的重编码
重编码就是根据现有的变量创建新的变量,比如将连续型变量修改为一组类别,将误编码替换正确,通常的表示方法是,variable[condition] <- expression具体l例子如下:
#原数据框中,有age,无agecat
leadership$agecat[leadership$age>75] <- "elder"
leadership$agecat[leadership$age>=55&leadership$age<=75] <- "middle aged"
leadership$agecat[leadership$age<55] <- "young"
这段代码,可以简写为
leadership <- within(leadership,{
agecat <- NA
agecat[age>75] <- "elder"
agecat[age>=55&age<75] <- "middle aged"
agecat[age<55] <- "young"})
3.3 变量的重命名
重命名的方法有,用fix()交互编辑,用names(leadership)[2] <- “testdata”,将leadership里的第二个变量名称改为testdata
3.4 缺失值
缺失值用符号NA表示,可以用函数is.na()来进行判断,返回TRUE或者FALSE,注意,无限或者不可能出现的值用NaN表示,判断函数是is.infinite()或者is,nan()。
在计算中,很多函数可以移除NA,比如sum函数,在参数中添加na.rm=TRUE即可得到移除了NA之后的总数,除此之外,可以用na.omit()移除含有NA的行。
3.5 日期
日期通常用as.Date(x,“input_format”)来进行转换,x为数据,后面为格式,默认是输入格式为yyyy-mm-dd
符号 | 含义 |
---|---|
%d | 数字表示的日期(1-31) |
%a | 缩写的星期名 |
%A | 非缩写的星期名 |
%m | 月份(00-12) |
%b | 缩写的月份 |
%B | 非缩写的月份 |
%y | 两位数的年份 |
%Y | 四位数的年份 |
还有一些关于日期的函数,Sys.Date()表示获取当前的"2019-11-27",date()表示获取当前的"Wed Nov 27 16:32:01 2019"。对于已经得到了的日期,可以用format函数来读取日期中指定的数据,例如:
> today <- Sys.Date()
> format(today, format="%B/%d/%Y")
[1] "November/27/2019"
> format(today, format="%A")
[1] "Wednesday"
日期可以直接加减,得到的是相差的天数,另外还可以用函数difftime()来计算时间间隔,并可以以星期,天,时,分,表等方式来表示difftime(x,y,units)第一个参数表示用来去减的数,第二个参数是被减数,第三个参数是时间间隔显示的方式,第三个参数units可以是"auto",“secs”,“mins”,“hours”,“days”,“weeks”
> today <- Sys.Date()
> dob <- as.Date("1992-11-23")
> difftime(today,dob,units="days")
Time difference of 9865 days
> difftime(today,dob,units="weeks")
Time difference of 1409.286 weeks
> difftime(today,dob,units="secs")
Time difference of 852336000 secs
3.6 类型转换
判断 | 转换 |
---|---|
is.numeric() 是否数值型数据 | as.numeric() |
is.character() 是否字符型数据 | as.character() |
is.vector() 是否向量数据 | as.vector() |
is.matrix() 是否矩阵数据 | as.matrix() |
is.data.frame() 是否数据框数据 | as.data.frame() |
is.factor() 是否因子数据 | as.factor() |
is.logical() 是否逻辑型数据 | as.logical() |