R 数据重塑

R 数据重塑 首页 / R入门教程 / R 数据重塑

R中,数据重塑是关于更改将数据组织为行和列的方式。在R中,通过将输入作为数据框来完成数据处理。从数据框的行和列中提取数据要容易得多,但是当我们需要的数据框的格式与接收数据的格式不同时,就会出现问题。 R提供了许多函数,可以将数据框中的行合并,拆分和更改为列,反之亦然。

Data Reshaping in R

转置矩阵

R使我们能够通过提供t()函数来计算矩阵或数据框的转置。此t()函数将矩阵或数据框作为输入,并返回输入矩阵或数据框的转置。 t()函数的语法如下:

t(Matrix/data frame)

让我们看一个例子来了解如何使用此函数

示例

a <- matrix(c(4:12),nrow=3,byrow=TRUE)  
a  
print("Matrix after transpose\n")  
b <- t(a)  
b  

输出:

Data Reshaping in R

连接行和列

R允许我们结合多个向量来创建数据框。为此,R提供了cbind()函数。 R还提供了rbind()函数,该函数允许我们合并两个数据框。在某些情况下,我们需要合并数据框以访问依赖于这两个数据框的信息。 cbind()函数和rbind()函数具有以下语法。

cbind(vector1, vector2,.......vectorN)
rbind(dataframe1, dataframe2,........dataframeN)

让我们看一个示例,以了解如何使用cbind()和rbind()函数。

示例

#创建矢量对象
Name <- c("Learnfk.com Rastogi","Chromefk.com Jain","Poemfk.com Garg","Nesfk.com Chaudhary")  
Address <- c("Moradabad","Etah","Sambhal","Khurja")  
Marks <- c(255,355,455,655)  
  
#将向量组合成一个数据框
info <- cbind(Name,Address,Marks)  
  
#打印数据框
print(info)  
  
# 创建另一个具有相似列的数据框
new.stuinfo <- data.frame(  
    Name = c("Deepmala","Arun"),  
    Address = c("Khurja","Moradabad"),  
    Marks = c("755","855"),  
    stringsAsFactors=FALSE  
)  
  
#打印hearder
cat("# # # The Second data frame\n")   
  
#打印数据框。 
print(new.stuinfo)  
  
# 组合行形成两个数据框。 
all.info <- rbind(info,new.stuinfo)  
  
# 打印头部.  
cat("# # # The combined data frame\n")   
  
# 打印结果。
print(all.info)  

输出:

Data Reshaping in R

合并数据框

R提供merge()函数来合并两个数据框。在合并过程中,存在一个约束,即数据框必须具有相同的列名。

让我们举一个例子,在该例子中,我们获取"MASS"库中存在的有关Pima Indian Women中糖尿病的数据集。我们将根据血压值和体重指数合并两个数据集。当选择用于合并这两个列,其中这两个变量的值在两个数据集匹配记录被组合在一起以形成一个单一的数据框。

示例

library(MASS)  
merging_pima<- merge(x = Pima.te, y = Pima.tr,  
   by.x = c("bp", "bmi"),  
   by.y = c("bp", "bmi")  
)  
print(merging_pima)  
nrow(merging_pima)  

输出:

Data Reshaping in R

Melting and Casting

在R中,最重要和最有趣的是关于更改数据的形状以获得所需的形状。为此,R提供了melt()和cast()函数。为了了解其过程,请考虑存在于MASS库中的称为ships的数据集。

示例

library(MASS)
print(ships)

输出:

Data Reshaping in R

数据融合

现在,我们将使用以上数据通过融合来组织它。Melt是指将列转换为多行。我们将上述数据集的类型和年份以外的所有列转换为多行。

数据重塑通常使用reshape2包,reshape2包用于实现对宽数据及长数据之间的相互转换,由于reshape2包不在R的默认安装包列表中,在第一次使用之前,需要安装和引用:

install.packages("reshape2")
library(reshape2)

示例

library(MASS)  
library(reshape2)  
molten_ships <- melt(ships, id = c("type","year"))  
print(molten_ships)  

输出:

Data Reshaping in R

数据转换

融合数据后,我们可以将其转换为新的形式,为此,R提供了cast()函数。

让我们开始进行合并数据的转换。

示例

library(MASS)  
library(reshape2)  
#Melting the data  
molten.ships <- melt(ships, id = c("type","year"))  
print("Molted Data")  
print(molten.ships)  
#Casting of data  
recasted.ship <- dcast(molten.ships, type+year~variable,sum)  
print("Cast Data")  
print(recasted.ship)  

输出:

Data Reshaping in R

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

零基础学Python -〔尹会生〕

Swift核心技术与实战 -〔张杰〕

性能工程高手课 -〔庄振运〕

Go 并发编程实战课 -〔晁岳攀(鸟窝)〕

手机摄影 -〔@随你们去〕

实用密码学 -〔范学雷〕

反爬虫兵法演绎20讲 -〔DS Hunter〕

深入浅出分布式技术原理 -〔陈现麟〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

好记忆不如烂笔头。留下您的足迹吧 :)