在R中,数据重塑是关于更改将数据组织为行和列的方式。在R中,通过将输入作为数据框来完成数据处理。从数据框的行和列中提取数据要容易得多,但是当我们需要的数据框的格式与接收数据的格式不同时,就会出现问题。 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
输出:
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)
输出:
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)
输出:
在R中,最重要和最有趣的是关于更改数据的形状以获得所需的形状。为此,R提供了melt()和cast()函数。为了了解其过程,请考虑存在于MASS库中的称为ships的数据集。
示例
library(MASS) print(ships)
输出:
现在,我们将使用以上数据通过融合来组织它。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)
输出:
融合数据后,我们可以将其转换为新的形式,为此,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)
输出:
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕