首页 > 其他分享 >R语言 | 宽数据变成一列,保留对应的行名和列名

R语言 | 宽数据变成一列,保留对应的行名和列名

时间:2024-11-19 20:13:53浏览次数:3  
标签:Petal 列名 行名 dat0 Sepal dat Length 一列 rep

对应稀疏矩阵 转为 宽数据框,见

目的:比如查看鸢尾花整体的指标分布,4个指标分开,画到一个图中。每个品种画一个图。

1.数据整理:宽变长 手工版

dat0=iris
dat=unlist(dat0[,1:4]) |> as.data.frame()
colnames(dat)="val"
dim(dat) #600 1

dat$obs= rep( rownames(dat0), times=ncol(dat0[,1:4]) )
dat$variation= rep( colnames(dat0[,1:4]), each=nrow(dat0[,1:4]) )
dat$Species= rep( dat0$Species, times=ncol(dat0[,1:4]) )
dim(dat) # 600   4
head(dat)
#                        val obs    variation Species
#Sepal.Length1 5.1   1 Sepal.Length  setosa
#Sepal.Length2 4.9   2 Sepal.Length  setosa

2.画图

colorset.types=ggsci::pal_npg()(5)[c(1,2,4,5)]
scales::show_col(colorset.types)
library(ggplot2)
ggplot(dat, aes(val, fill=variation))+
  geom_density(linewidth=1, alpha=0.5)+
  facet_grid(Species~., scale="free_y")+
  theme_bw(base_size = 14)+
  scale_fill_manual("Species", values = colorset.types, #breaks = my.breaks, labels=my.labels
                    )+
  #scale_x_discrete(breaks = my.breaks, labels = my.labels) +
  labs(x="Length")

在这里插入图片描述

3. 原理

原理1:rep() 重复的方式,整体重复times=,每个元素分别重复 each=

rep(c("a", "b"), times=2) #"a" "b" "a" "b"
rep(c("a", "b"), each=2) #"a" "a" "b" "b"

原理2: 对数据框做 unlist() 默认是按列展开。
数学中矩阵是列向量。

> head(iris[1:2, 1:4])
  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.1         3.5          1.4         0.2
2          4.9         3.0          1.4         0.2
> unlist(iris[1:2, 1:4])
Sepal.Length1 Sepal.Length2  Sepal.Width1  Sepal.Width2 Petal.Length1 Petal.Length2  Petal.Width1  Petal.Width2 
          5.1           4.9           3.5           3.0           1.4           1.4           0.2           0.2 

End.

标签:Petal,列名,行名,dat0,Sepal,dat,Length,一列,rep
From: https://blog.csdn.net/wangjunliang/article/details/143886792

相关文章

  • 如何将一行数据转变为一列数据(wps表格操作)
    第一部分:问题分析我想要把这行数据变成纵向的。第二部分:解决方法(1)ctrl+c复制(2)选中一个空格,然后右键选择选择性粘贴(3)选择转置选项(4)效果展示......
  • MYSQL将一行数据的多列值放到另一列的多个行中
    在MySQL中,如果你想要将一行数据的多列值放到另一列的多个行中,你可以使用一个辅助表(例如,使用nums表)来生成序列,然后与你的原始表进行联接。比如下面一行一行数据,包含col1~col5总共5列,现在需要将这5类转换到一列中。转换前的数据:转换后的结果: 以下是一个示例:首先,创建一个辅......
  • python中常见的8种数据结构之一列表
    列表是Python中最常见的数据结构之一。它是一种有序的集合,可以包含不同类型的数据。以下是列表的一些特点和常见操作:1.定义列表:可以使用方括号([])来定义一个空列表,也可以在方括号中添加元素来初始化列表。  示例:```my_list=[]```或者```my_list=[1,2,3]```2.......
  • 7.10 已知一组观测数据,如表中7.17.excel(表中第一列为x的值,第二列为y的值)。试用插值方
    importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromscipy.interpolateimportinterp1d,PchipInterpolator,CubicSplinefromscipy.optimizeimportcurve_fitfromscipy.statsimportnormfile_path='7.17.xlsx'data=pd.rea......
  • 如何把一个python列表(有很多个元素)变成一个excel表格的第一列?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者群有个叫【麦当】的粉丝问了一个关于Python如何把一个python列表(有很多个元素)变成一个excel表格的第一列的问题,这里拿出来给大家分享下,一起学习。二、解决过程这里给出【dcpeng】和【德善堂小儿推拿-瑜亮老师】大佬......
  • C# 隐藏gridview中的某一列(在前台不显示)
    1、在前台添加OnRowDataBound="gvShow_RowDataBound"事件<CimesUI:CimesGridViewWidth="60%"style="margin:0auto;"ID="gvShow"runat="server"AutoGenerateColumns="False"OnRowDataBound="gvShow_R......
  • 如何把一个python列表(有很多个元素)变成一个excel表格的第一列?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者群有个叫【麦当】的粉丝问了一个关于Python如何把一个python列表(有很多个元素)变成一个excel表格的第一列的问题,这里拿出来给大家分享下,一起学习。二、解决过程这里给出【dcpeng】和【德善堂小儿推拿-瑜亮老师】大佬......
  • 如何一键将数据库表导出为Excel,并且列名为中文注释
    工作中,我们经常需要将数据库表的数据导出导excel,通常我们会使用诸如navicate等数据库编辑器的导出功能来导出,但是通常导出步骤繁多,而且导出的都是英文的表名和列名,不便于理解。下面我们来介绍的卢导表,如何实现一键导出。如图,需导出数据库中如下的两张表新建一个数据库连......
  • 统一列宽并设置显示选项
    #有时pandas默认输出的列宽不够,导致某些列与内容错位。我们可以设置pandas的显示选项来调整列宽:importpandasaspd#设置pandas选项来显示对齐pd.set_option('display.unicode.east_asian_width',True)#对齐中文字符pd.set_option('display.colheader_justify','......
  • vue3 vxe-grid 通过数据库返回的列信息,生成columns,并且其中有一列是img类型,进行slots
    1、一般我们写死的列信息的时候,会这样定义:2、然后我们在template里面,这样这样写slots格式化部分:这样表格中就会展示出一张图片,并且,我们点击了可以查看大图。3、那么我们从数据库中返回的列,应该如何去写:letfields={field:item.fieldname,......