首页 > 编程语言 > 详细

R语言--基本数据管理(变量、缺失值、日期值、数据类型转换、数据框)

时间:2021-07-02 22:54:33      阅读:44      评论:0      收藏:0      [点我收藏+]

1 基本数据管理

1.1一个示例

1)定义向量,造数据框

manage<-c(1,2,3,4,5)

date<-c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")

country<-c("US","US","UK","UK","UK")

gender<-c("M","F","F","M","F")

age<-c(32,45,24,34,88)

q1<-c(5,3,3,3,2)

q2<-c(4,5,5,3,2)

q3<-c(5,2,5,4,1)

q4<-c(5,5,5,NA,2)

q5<-c(5,5,2,NA,1)

lendership<-data.frame(manager,country,gender,age,q1,q2,q3,q4,q5)

2)创建新变量

方法一:使用$

q6<-q4+q5

lendership$q6<-lendership$q4+lendership$q5

方法二:transform()为数据表添加列

lendership<-transform(lendership,q7=q4+q5,q8=q1+q2)

3)变量重编码

方式一:使用$

lendership$age[lendership$age==88]<-NA

lendership$agecat[lendership$age>50]<-"Elder"

lendership$agecat[lendership$age>40 & lendership$age<=50]<-"Middle Aged"

lendership$agecat[lendership$age<40]<-"Young"

方式二:使用within

lendership1<-within(lendership,{

  agecat<-NA

  agecat[age>50]<-"Elder"

  agecat[age>40 & age<=50]<-"Middle Aged"

  agecat[age<=40]<-"Young"

})

 技术分享图片

4)变量重命名

方式一:弹出数据编辑器

 fix(lendership)

方式二:使用names(),只能索引一列一列的改,不方便

 names(lendership)[1]<-"manager1"

解释:names里面是表名,[1]代表修改第一列

方式三:导入编辑包plyr,使用函数rename()

library(plyr)

lendership<-rename(lendership,c(manager1="ID",q1="qq1"))

 技术分享图片

 

 2 缺失值

2.1 识别缺失值函数is.na()

y<-c(1,2,NA)

is.na(y)

技术分享图片

2.2 重编码某些值为缺失值

lendership$age[lendership$age==88]<-NA

2.3 缺失值参与计算会怎样

 y<-c(1,2,NA)

 z<-y[1]+y[2]+y[3]

 技术分享图片

z<-sum(y,na.rm = T)  #na.rm = T意思是有缺失值就移除

 技术分享图片

2.4 移除含有缺失值的观测(行)

newdata<-na.omit(lendership) #删除含有缺失值的行

 技术分享图片

 

3 日期值

3.1 日期值的读入 as.Date

mydata<-as.Date(c("2008-06-11","2018-08-08"))

 技术分享图片

3.2 日期值的格式

strdata<-c("01/05/1996","08/22/1998")

mydata1<-as.Date(strdata,"%m/%d/%Y")  #指定日期格式

 技术分享图片

3.3 系统日期与当前日期

系统日期:Sys.Date()

当前日期:date()

 技术分享图片

3.4 日期值的输出格式

today<-Sys.Date()

format(today,format="%B %d %Y")  #调整日期输出格式format%B表示月份文字输出

 技术分享图片

3.5 日期值的间隔计算

方式一:按天计算

startdata<-as.Date("1996-11-22")

enddata<-as.Date("2021-07-02")

days<-enddata-startdata

技术分享图片

方式二:按周计算,使用函数difftim()

difftime(enddata,startdata,units = "weeks")

 技术分享图片

4 类型转换

4.1 is.xxx()函数,用来判断类型

技术分享图片

4.2 as.xxx()函数,用来转换

技术分享图片

 

 

5 数据排序

lendership2<-lendership[order(lendership$gender,lendership$age),]

 技术分享图片

 

6 数据集操作

数据输入:

manage<-c(1,2,3,4,5)

date<-c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")

country<-c("US","US","UK","UK","UK")

gender<-c("M","F","F","M","F")

age<-c(32,45,24,34,88)

q1<-c(5,3,3,3,2)

q2<-c(4,5,5,3,2)

q3<-c(5,2,5,4,1)

q4<-c(5,5,5,NA,2)

q5<-c(5,5,2,NA,1)

lendership<-data.frame(manager,country,gender,age,q1,q2,q3,q4,q5)

leader_a<-data.frame(manage,country,gender,age)

leader_b<-data.frame(manage,q1,q2,q3,q4,q5)

leader_b<-leader_b[order(-leader_b$manage),]

 技术分享图片

 

 技术分享图片

6.1 数据集(框)的合并 merge()

lendership1<-merge(leader_a,leader_b,by="manage")  #通过主键manage合并

 技术分享图片

6.2 数据集(框)取子集

1)保留变量

方式一:newdata<-lendership[,c(5:9)]

 技术分享图片

方式二: myvar<-c("gender","country","q5")

                  newdata1<-lendership[myvar]

 技术分享图片

2)删除变量

方式一:前面加负号 -

newdata<-newdata[c(-2,-3)]

方式二:赋值NULL

newdata$q3<-NULL

 技术分享图片

(3)选入观测(保留行)

newdata2<-lendership[1:3,]  #选择13

 技术分享图片

newdata3<-lendership[lendership$gender=="M" & lendership$age>30,]

 技术分享图片

4subset函数

newdata4<-subset(lendership,gender=="M" & age>25,select=c("manager","gender","age"))

解释:gender=="M" & age>25这是选择保留的行,select是选择保留的列

 技术分享图片

若出现了错误:选择了未定义的列

 技术分享图片

修正:检查自己的列变量名字是否写错

5)使用SQL语句操作数据集(框)

加载包:library(sqldf)

语句:newdf<-sqldf("select * from mtcars where carb=1 order by mpg",row.names = T)

 技术分享图片

 

R语言--基本数据管理(变量、缺失值、日期值、数据类型转换、数据框)

原文:https://www.cnblogs.com/YY-zhang/p/14964699.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!