R语言mad(c(1 2 3 4)),R语言--数据管理-R语言实战笔记-第四&五章

第四、第五章都是说的数据管理,合并在一起做个总结,在个人看来,数据管理是一件非常繁琐的事情,但是,每个统计的前提都是一个合适的数据样本,对的,“合适”,做到合适可不是一个简单的事情。

本文就不分基本和高级两部分了,合在一起写吧。

首先,我们建立一个数据框,这个数据框的数据来源可以随意,我直接使用书上面的例子吧。(PS:markdown和R的脚本,一大堆的#号~简直想死的心都有了~)

首先是数据框建立

manager

date

gender

age

q1

q2

q3

q4

q5

leadership

得到一个数据框如下:

a4c26d1e5885305701be709a3d33442f.png

从表中看出,有日期是“月/日/年”,我想作为一个中国人,是绝对看不惯这种日期的,别的不说,我就问一句,在不知道格式的情况下,他们是怎么区分“01/02/03”是什么鬼日期?有年龄是99的,还不退休?有q4和q5是空着的,调查表经常会碰到这种不填的行为,没办法,只能认了,删除or接受or修改后接受?看需求了。

OK,让我们来直接使用敲代码的方式去引入本章的内容!

基本数据管理

创建变量(把q1和q2,q2和q3的和和平均值求出来)

直接使用

使用within函数简化输入,和with不同的是,within可以修改数据框

leadership$q1q2

leadership

使用transform(数据框对象,新列名1=公式1,新列名2=公式2……)

leadership

变量重编码(替换99岁那家伙,把年龄分组),先替换年龄

leadership$age[leadership$age==99]

然后分组,建立一个新变量来处理分组后的分组类别

leadership

agecat

agecat[age>55]

agecat[age>=35 & age<55]

agecat[age<35]

再然后重命名数据框内的变量,注意,是数据框内的变量,又叫字段字,有两个方法

1、是reshape的rename方法

install.packages("reshape")

library(reshape)

leadership

2、names方法(与上述方法等效,选择一个即可)

names(leadership)[1:2]

缺失值的简单处理,书上说,后面有更复杂精妙的处理方法-_-!

首先判断缺失值,它不是一个值,只能使用is.na()函数来判断

is.na(leadership[,6:10])

然后标记缺失值,使用NA即可,如上述修改年龄(即变量重编码)的方式修改,这里就不重复了

排除缺失值(在多数统计函数中,有na.rm=TRUE的方式去排除缺失值,默认是不排除的,下面两句的计算结果是不同的,支持与否看具体函数的help)

sum(leadership$q4)

sum(leadership$q4,na.rm=TRUE)

删除含有缺失值的行(你要把它赋值到变量,不然没用,如果这都不理解,说明基础还不过关,回头复习吧,骚年~)

na.omit(leadership)

日期值处理

我们在看leadership数据框的时候发现日期这一个变量还是char类型,不是日期类型,所以,我们要告诉R,这个变量是日期。什么,怎么看类型?来来来,一锤子把电脑磕开就可以看到了

首先要明白日期格式,这里看下面的附表吧,在这里要用到的是%y(后两位年份),%m(两位月份),%d(两位日期)

leadership$testDate

日期值的默认格式是”2016-09-15”,你告诉了R,那个字段是日期,它的格式是什么,这样,之后无论你用什么格式奇葩格式表示日期,R都能认识了,比如“日日日日日日月年”什么的~

再介绍几个用得着的函数

Sys.Date() #当前日期“yyyy-mm-dd"格式

date() #当前日期时间"%a %b %d %H:%M:%S %Y",虽然有用,但是又是一个奇葩格式,面貌,我目前没有找到怎么把它转换成日期的方式,求大神解释

Sys.time() #当前日期时间"%Y-%m-%d %H:%M:%S CST"

日期是可以进行加减运算的!但是两日期差异运算要求两者具有的精度是日期,不能包含时分秒,要使用时分秒运算,需要使用difftime来计算。

Sys.Date()-as.Date("2016-12-11")

difftime(Sys.Date(),as.Date("2016-12-11"),units = "mins")

关于日期函数的处理,有一个天大的坑在这里,如果你的操作系统的日期格式是中文的,用Sys.getlocale(“LC_TIM

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值