R语言实战笔记--第四&五章 数据管理

R语言实战笔记–第四&五章 数据管理

标签(空格分隔): R语言


  第四、第五章都是说的数据管理,合并在一起做个总结,在个人看来,数据管理是一件非常繁琐的事情,但是,每个统计的前提都是一个合适的数据样本,对的,“合适”,做到合适可不是一个简单的事情。
  本文就不分基本和高级两部分了,合在一起写吧。
  首先,我们建立一个数据框,这个数据框的数据来源可以随意,我直接使用书上面的例子吧。(PS:markdown和R的脚本,一大堆的#号~简直想死的心都有了~)

首先是数据框建立

manager <- c(1, 2, 3, 4, 5)
date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08", "5/1/09")
gender <- c("M", "F", "F", "M", "F")
age <- c(32, 45, 25, 39, 99)
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)
leadership <- data.frame(manager, date, gender, age, q1, q2, q3, q4, q5, stringsAsFactors = FALSE)

  
  得到一个数据框如下:
  这里写图片描述
  从表中看出,有日期是“月/日/年”,我想作为一个中国人,是绝对看不惯这种日期的,别的不说,我就问一句,在不知道格式的情况下,他们是怎么区分“01/02/03”是什么鬼日期?有年龄是99的,还不退休?有q4和q5是空着的,调查表经常会碰到这种不填的行为,没办法,只能认了,删除or接受or修改后接受?看需求了。
  OK,让我们来直接使用敲代码的方式去引入本章的内容!
  
基本数据管理
  创建变量(把q1和q2,q2和q3的和和平均值求出来)
  直接使用<-方式建立新变量,+-*/等运算符号,列表后面有汇总
  使用within函数简化输入,和with不同的是,within可以修改数据框

leadership$q1q2<-leadership$q1+leadership$q2    
leadership<-within(leadership,m_q1q2<-(q1+q2)/2)

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

leadership<-transform(leadership,q2q3=q2+q3,M_q2q3=(q2+q3)/2)

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

leadership$age[leadership$age==99]<-NA

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

leadership<-within(leadership,{
agecat<-NA
agecat[age>55]<-"Elder"
agecat[age>=35 & age<55]<-"Middle Aged"
agecat[age<35]<-"Young"})

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

install.packages("reshape")
library(reshape)
leadership<-rename(leadership,c(manager="managerID",date="testDate"))

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

names(leadership)[1:2]<-c("managerID","testDate")

  缺失值的简单处理,书上说,后面有更复杂精妙的处理方法-_-!
  首先判断缺失值,它不是一个值,只能使用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<-as.Date(leadership$testDate,"%m/%d/%y")

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

Sys.Date() #当前日期“yyyy-mm-dd"格式
date() 
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sevan_Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值