美文网首页
数据转换

数据转换

作者: 鼓吉石 | 来源:发表于2022-01-15 11:44 被阅读0次

数据转换的必要性

在读取数据之后,数据分析之前就需要对数据格式转换达到承前启后的作用

数据转换包含的内容

1.数据结构的变化:添加,删除,修改,筛选,排序。。。

> cars32 <- read.xlsx("C:/Users/RNG/Desktop/RData/mtcars.xlsx",sheet = 1)#读取一个数据
> class(cars32)#检查该数据格式
> class(state.x77)#检测数据格式发现是矩阵
[1] "matrix" "array" 
> dstate.x77 <- as.data.frame(state.x77)#强制将矩阵转换为数据框
> class(dstate.x77)
[1] "data.frame"

如何取子集

> who <- read.csv("C:/Users/RNG/Desktop/RData/WHO.csv",header = T)#读取数据文件
#取子集方法1:
> who1 <- who[c(1:50),c(1:10)]#取前50行10列
#方法2:使用逻辑判断
> who3 <- who[which(who$Continent==7)]#使用which函数判断只取contient=7的子集
#方法3:使用sample函数随机抽样
> sample(x,60,replace = T)#x为所抽取目标,60为想抽取个数,replace为是否有放回,默认为不放回
> who[sample(who$CountryID,30,replace = F),]#利用sample在数据框中随机取子集

如何删除内容

> mtcars[c(-1:-5),]#删除mtcars的1-5行

数据框的添加与合并

> cbind(USArrests,state.division)#cbind表示添加列,即给usa添加一列state
> rbind(data1,data2)#将两个的行合并,但合并行的前提是必须保证列名相同
#当合并的内容有重复时:
> duplicated(data4)#使用该函数检查重复项
> data4[!duplicated(data4),]#将重复项利用!取反得出非重复项
#或者直接使用unique函数:
> unique(data4)#直接去除重复项

矩阵的转置

> sractm <- t(mtcars)#使用t函数直接转置
#数据的反置,即将某行数据前后反转:
> rev(letters)#使用rev函数之间进行前后反置

数据内容的修改

> transform(women,height=height*2.54)#使用transfrom函数进行转换,height=height*2.54即用*2.54后的height代替之前的,也可以新增一列:
> transform(women,cm=height*2.54)#新增一列cm

数据框的排序

> sort(rivers)#使用sort对向量排序
> mtcars[order(mtcars$mpg),]#使用order函数对数据框的某列排序
> mtcars[order(-mtcars$mpg),]#使用order函数对数据框进行负排序

数据的计算

> apply(WorldPhones,MARGIN = 1,FUN = sum)#使用apply函数,margin=1为对行作用,fun=sum为操作为求和
> apply(WorldPhones,MARGIN = 2,FUN = mean)#margin=2为对列作用

数据的标准化和中心化

#使用scale函数进行标准化和中心化
> scale(state.x77,center = T,scale = T)#center=T表示中心化,scale=T表示标准化

reshape2包对数据格式转换(相当于excel里的数据透视)

> library(reshanpe2)
> aql <- melt(airquality,id.vars = c("month","day"))#融合数据,id.vars=...表示把...作为观测值进行融合
> aqw <- dcast(aql,month+day~variable)#数据重铸
#dcast表示将长数据变宽数据,~表示左右两边有关联,即把左右两边的数据并列

tidyr包对数据进行转换(适用于行名没有重复,列名没有重复的数据)

> library(tidyr)
#gather函数
> gather(tdata,key = "Key",value = "Value",cyl,disp,mpg)#将原数据新加两列key和value,各自命名,cyl,disp,没碰过、表示把这三列合并到前面,如果没写则保持原状不合并
#spread函数:
> spread(gdata,key = "Key",value = "Value")#将gather函数打散的数据恢复

dplyr包

> library(dplyr)
#filter函数,用来过滤数据
> dplyr::filter(iris,iris$Sepal.Length>7)
#distinct函数,去除重复数据
> dplyr::distinct(rbind(iris[1:10,],iris[1:15,]))
#sample-n函数,随机取出几行
> dplyr::sample_n(iris,10)
#按比例随机选取
> dplyr::sample_frac(iris,0.1)
#排序函数arrange
> dplyr::arrange(iris,iris$Sepal.Length)
#添加新列的mutate函数
> dplyr::mutate(iris,new=iris$Sepal.Length+iris$Petal.Length)

链式操作符%>%

在R中CTRL+shift+M

> head(mtcars,20) %>% tail(10)#先取出数据的前20行再取前20行里的后10行
> iris %>% group_by(iris$Species) %>% summarise(avq=mean(iris$Sepal.Width)) %>% arrange(avq)
#对数据iris先按照species分组,再对分组计算width的平均值,再对平均值排序

相关文章

  • day4循环和分支

    一、数据类型转换 1.数据类型自动转换 运行 2.强制转换 基本语法:类型名(需要转换的数据) a.将其他数据转换...

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • python数据分析10:数据转换

    数据转换:一般包括一列数据转换为多列数据,行列转换,DataFrame转换为字典、列表和元组等 【一列数据转换为多...

  • 循环

    一,数据类型转换 基本格式:数据类型(带转换数据) 1.转换成int类型:int(待转换数据) (1).float...

  • 2018-08-23day04循环和分支学习总结

    一.数据类型转换 1.数据类型的自动转换 2.强制转换 基本语法:类型名(需要转换的数据)a.将其他数据转换成in...

  • SpringMVC 数据转换 Day22 2018-12-12

    SpringMVC 数据转换 springMVC数据绑定流程 使用ConversionService转换数据 使用...

  • SpringMVC多种数据类型转换器 Day30 2018-12

    SpringMVC 数据转换 springMVC数据绑定流程 使用ConversionService转换数据 使用...

  • JavaScript基础03- 数据类型转换

    数据类型转换 所谓的数据类型转换,就是将一种数据类型转换为另一种数据类型,所以,数据类型转换包括,转换为字符串类型...

  • 3-数据类型转换

    数据类型转换 将数据有当前类型变化为其他类型的操作就是数据类型转换。 数据类型转换分类: 数据类型转换一共分为2类...

  • JS里的数据类型转换

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Numb...

网友评论

      本文标题:数据转换

      本文链接:https://www.haomeiwen.com/subject/hhpwcrtx.html