在R中整理数据

原始数据一般分散杂乱,并含有缺失和错误值,因此在进行数据分析前首先要对数据进行整理。

一、首先,了解原始数据的结构。

可使用如下函数(归属baseR)来查看数据结构:

class(dataobject)  查看数据对象的类别

dim(dataobject)  查看数据的维度

names(dataobject)  查看列名

str(dataobject) 查看数据概要

glimpse(dataobject) 查看数据概要

二、将数据变得整洁

可使用下列函数(归属package: tidyr)整理数据:

1.  gather(data, key, value, -col )   将多个列收紧成关键列值,宽数据变成长数据。

2.  spread(data, key, value)      将关键列值扩展成多个列,长数据变成宽数据。

3. separate(data, col, into, sep = "")  将一列分成多列。

4. unite(data, col, ..., sep = "")   将多列合成一列。

杂乱数据的特征和对应处理函数:

1.列名是值(value)而不是变量(variable)  ---gather

2.变量同时存在行和列中 ---spread

3.多个变量位于同一列   ---seperate

4.单个观测值位于多张数据表中,多个类型单元位于同张数据表 ---seperate+unite

三、准备用于分析的数据

1.数据的类别如下,可调用class()查看数据的类别,也可使用as.numeric()、as.factor()等函数来转换类别。

  • character
  • numeric
  • integer
  • factor
  • logical

2.对日期和时间的处理

需装载的package:lubridate

调用的函数:ymd_hms(), ymd()等。 ymd_hms 对应:年月日_时分秒

例子:

> dmy("17 Sep 2015")
[1] "2015-09-17"

 

3.字符串的处理

需装载的package:library(stringr)

调用的函数:

str_pad(string, width, side = c("left", "right", "both"), pad = " ")   填充字符串

str_trim(string)     清除字符串首尾空格

str_detect(string, pattern)    检测字符串中是否存在某个pattern

str_replace(string, pattern, replacement)   替代字符串中匹配的pattern

na.omit(df)   移除有缺失值的行

complete.cases(df)    查看没有缺失值的行

下面两个字符处理函数在baseR中

toupper(string)  转换成大写

tolower(string)  转换成小写

4.  缺失值和特殊值(miss and special value)

在R中,缺失值一般用NA表示。特殊值有 Inf(无穷值)、NaN(not a number)。

查看数据中是否有NA:

is.na(data)

any(is.na(data))

查看数据中没有缺失值的行:complete.cases(data)

在数据中移除有缺失值的行:na.omit(data)

 

5.处理数据中的异常值和明显错误

常用summary() 和 hist() 函数来确认异常值(或极端值)

时间: 2024-10-13 13:36:40

在R中整理数据的相关文章

<Android>关于获取资源文件R中的数据

通常我们都会使用context.getResources().getIdentifier(name, type,context.getPackageName())的方法去获取R.java中的数据. type--R其中的内部类名,如"drawable","string","color","dimen","layout"等,这也是我们常用的关于界面所需要获取的数据类型. name--R内部类中的static变量

R中,数据标准化方法

标准化方法(Normalization Method)数据的标准化是将数据按比例缩放,使之落入一个小的特定区间.由于指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间.一般常用的有以下几种方法.(1) 最小-最大规范化对原始数据进行线性变换.假定MaxA与MinA分别表示属性A的最大与最小值.最小最大规范化通过计算将属性A的值映射到区间[a, b]上的v.一般来说,将最小-最大规范化在用于信用指标数据上,常用的有以下两

R中的数据重塑函数

1.去除重复数据. 函数:duplicated(x, incomparables = FALSE, MARGIN = 1,fromLast = FALSE, ...),返回一个布尔值向量,重复数据的第一个为FALSE,其他为TRUE. x可以是vector或data.frame.为data.frame时,数据的基本单位是行. 2.把一行数据或一列数据传递给指定的函数. 函数:apply(X, MARGIN, FUN, ...),返回一个结果向量. x是数据,可以是矩阵,数据框.margin是维度

对考勤原始数据处理,插入新表中整理数据

ALTER  PROCEDURE [dbo].[Hr_addNewMonth]asBEGIN    INSERT INTO [Hr_1]           ([日期时间],[姓名]           ,[考勤号码])   select distinct CONVERT(char(10),日期时间,120) as atime,姓名,考勤号码 from Hr a   where (select COUNT(*) from [Hr_1] b where b.考勤号码 = a.考勤号码 and b.

用黏贴板读取excel中的数据以及用R生成人名

本人尚在超级菜鸟级别,中间有些代码写的很low,请不要见笑! 1.今天先跟大家分享一个小技巧,用黏贴板将excel中的数据读进R 首先选中要读入R的数据 如图,上面是我分析的病人相关资料,Ctrol+C选中目标区域,接着在R运行以下代码: excel_clinic_data <- read.table("clipboard",sep="\t",header = T) 运行后就可以看到我们想要读到R中的数据已经读进来了,超级方便. 注意:经本人试验,好像不支持不

R语言基础知识学习(一):R中的数据类型和数据结构

R中数据类型有:数值型,字符型,逻辑型和复数型等. R 中存储数据的结构有:向量,数组,因子,数据框,矩阵和列表等. 向量是用于存储数值型.字符型或逻辑型数据的一维数组. 用函数c()可以来创建一个向量,如: > a <- c(1,2,3,4)> b <- c('china','america','japan')> c <- c(TRUE,FALSE,TRUE,FALSE)> ls()[1] "a" "b" "c&

R中读取EXCEL 数据的方法

最近初学R语言,在R语言读入EXCEL数据格式文件的问题上遇到了困难,经过在网上搜索解决了这一问题,下面归纳几种方法,供大家分享: 第一:R中读取excel文件中的数据的路径: 假定在您的电脑有一个excel文件,原始的文件路径是:D:\work\data\1 如果直接把这个路径拷贝到R中,就会出现错误,原因是: \是escape character(转义符),\\才是真正的\字符,或者用/ 因此,在R中有两种方法读取该路径: 1:在R中输入一下路径:D:\\work\\data\\1     

R 中数据导入

R语言数据导入  数据导入 1.保存和加载R的数据(与R.data的交互:save()函数和load()函数) a <- 1:10 save(a, file = "data/dumData.Rdata")  #data文件为当前工作目录下的文件,必须存在 rm(a) load("data/dumData.Rdata") print(a) 2.导入和加载.csv文件(write.csv()函数和read.csv()函数) var1 <- 1:5 var2

R运行大数据的过程中遇到的问题:不能有负长度矢量

解决办法: 只能通过一些trick来减小生成的中间矩阵的大小.比如我所遇到的问题是: 我要运行(W%*%H%*%t(H)) 这句话,(W的规模是5000000*10,而H的规模是10*100000) 解释执行W%*%H的时候报错:不能有负长度矢量. 坑爹的中文报错,google发现,和中文有关的R文档.记录真是少得可怜,终于通过英文“negative length vectors are not allowed”这句话, 看到老外们的解释,才知道了,简而言之就是因为数据规模太大,而R系统不允许生