全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1252 0
2015-12-22
本部分跟随本人学习笔记_1,受限于帖子字数及格式限制,重新作为新帖发表。学而时习之,继续加油!
C4基本数据管理处理





1.创建新变量:原:mydata=data.frame(x1,x2),希望增加平均值:mydata=transform(mydata,  #原数据
                                                                                                                                          meanx=(x1+x2)/2)

2.语句variable[condition] <- expression将仅在condition的值为TRUE时执行赋值


例如,处理age=99为缺失值:leadership$age[leadership$age==99]<-NA.
3.变量重命名:可使用交互式编辑界面:fix(x)或者使用names来更改,eg:
                             names(x);#显示x的列名:A B C D
                             names(x)[2]<-"h"
                              names(x) #显示x的列名:A h C D
4.变量重编码:可参考笔记中的:数据整形(reshape)
5.日期值处理
5.1R中默认的日期值格式为:yyyy-mm-dd,使用函数:as.Date(x,”x的日期格式")可将日期变量转成系统默认格式
例如:

>strdates<-c("01/23/1987","03/09/1986")
> dates<-as.Date(strdates,"%m/%d/%Y")#著名原来的日期格式


> dates


[1] "1987-01-23" "1986-03-09"


当前日期:Sys.Date()(显示:"2015-09-10"),日期及时间:date()(#显示:"Thu Sep 10 16:35:44 2015")
5.2format(x,format="output_format")  format函数可接受一个参数(例子为日期)并按某种格式输出结果(符号组合见下图)。

表4-4 R日期格式

符合含义示例
%d数字表示的日期(0-31) 01~31
%a缩写的星期名周一
%A 大写星期名星期一
%m月份(00-12)00~12
%b缩写的英文月份1月
%B大写的英文月份一月
%y两位数的年份07
%Y四位数的年份2007


检查某天是周几:weekdays(as.Date("")) #weekdays()需为.Date格式的
检查多少天:dsys<-A-B(A、B均为.Date格式)或者使用:difftime(A,B,units="weeks"/"days"/"sec"/"hours")(A、B为.Date格式)
日期转字符:as.character()——较少使用

5.3判断类型并将其转换的函数
表4-5 R类型转换函数
判断     转换
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()
6.数据排序order()-——默认为升序,在数据前加减号,可进行降序排序
EG:
>attach(leadship)  #统一饮用
> newleadship2<-leadship[order(gender,age),]  #针对gender,age进行
> newleadship2

7.数据集的合并
7.1添加列:横向合并两个数据框(数据集),使用merge()函数(类似为内链接,inner join)
eg:total<-merge(dataframeA,dataframeB,by=c("ID","Country"))#将两个数据框按照ID和Country进行合并。
如果直接横向合并两个矩阵或数据库,并且不需要指定一个公共指引,可以直接使用cbine()函数。total<-cbind(A,B)(要求:每个对象A,B必须拥有相同的行数,且以相同顺序排序。)
7.2添加行
纵向合并两个数据库(数据集),使用rbind(A,B)函数。(要求:两个数据框拥有相同变量,不同需提前处理)
8.数据集取子集
1.选入(保留)变量
方法:1.可以使用下标来选择,eg:A<-matrix(1:20,4,5),需要后两列数据,则:B<-A[,4:5]或者B<-A[,c(4,5)]
          2.使用列名称选择:eg:A列名称为q1,q2,q3,q4,q5。选择后两列,则:B<-A[c("q4","q5")]
                         或者                           myvars<-paste("q",4:5,sep="")  
                                                           B<-A[myvars]
2.剔除(丢弃)变量
方法:1.使用下标标为负值,eg:leadership中不需要3,4列,B<-leadship[c(-3,-4)]
          2.使用TorF,eg:
                                         var<-names(leadership)%in%c("q3","q4")  #返回值为TorF,当为q3,q4时为T,其余为F
                                          B<-leadership[!var]              #!var得到与var相反的TorF,其中F不在leadership中不显示

3.选入观测
1)data<-x[1:3,]   #前三行数据,全列
2)data<-x[which(x$x1=="条件"&x$x2>20(条件)),]筛选符合条件的行,列全选
3)使用attach(x)来简便操作:attach(x)
                                                 data<-x[which(x1=="cond"&x2>20(cond)),]
4.subset()函数
                               subset(x,subset(行选取的条件/子集条件,可省略),
                                               select=条件(列选取的条件,可省略))
eg:data<-subset(leadship,age>35|age<24,select=paste("q",1:3,split=""))
9.使用SQL语言
需要安装sqldf包,eg:
                                  sqldf("select avg(mpg) as avg_mpg,avg(disp) as avg_disp,gear from mtcars where cyl in (4,6) group by gear")



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群