R语言实战学习笔记(三)基本数据管理

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值