如何用MAtlab把多行数据转化为一列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用MAtlab把多行数据转化为一列相关的知识,希望对你有一定的参考价值。
参考技术A如何用MAtlab把多行数据转化为一列
若是行向量就转置
a=[1 2 3 4];a\'
矩阵,麻烦一点就比如
a=[1 2; 3 4];
b=[a(1,:) a(2,:)]\'
excel表格的一行数据我能转化为一列吗
选中——复制——编辑——选择性粘贴——转置
matlab中,如何把cell型数据转化为double型数据
cell是胞元数据,它里面可以存储的数据类型很多,如果你在一个胞元里面存储的是double类型的数据,你要提取出来,直接用赋值语句即可。
如何把多个JPEG转化为一个PDF
PS中储存为-下拉单找到-确定
如何用matlab将大量mat转化为jpg
你这个问题是个具体编程的问题,涉及具体的数据转换,请把数据文件发过来看看,才能写程序。
如何用photoshop把多页pdf格式 转化为jpg格式
建议安装Adobe Acrobat XI Pro软件,用Adobe Acrobat XI Pro打开PDF文档,另存为JPG格式即可。
matlab如何将数据转化为dataset格式
在数据处理当中,我们经常碰到数据 *** 并的需要。在一些语言如SAS,SQL中,数据 *** 并是一个非常简单的问题,但是在Matlab中,数据 *** 并则显得稍微复杂了一点。
在Matlab中,要想合并数据,有两个办法,第一个办法就是使用dataset这种数据类型,这个statistic toolbox中的数据类型,专门为统计分析开发的。mat,cell,等数据类型转换成dataset数据类型可以查看 mat2dataset,cell2dataset函数。当然,也可以直接定义dataset数据集。有了dataset数据类型,那么就可以使用join函数进行数据合并。还有另外一种办法就是对于金融序列数据,可以使用Financial toolbox中的merge函数,前提是数据类型为金融时间序列对象。本文主要讨论join函数如何合并数据。
[C,IA,IB]= join(A,B,param1,val1,param2,val2,...)
参数一 Keys &&LeftKeys,RightKeys
在join这个函数中,首先要输入的参数是Keys 。这个一般为一个变量名,作为数据合并的标准。当Keys为变量名时,A,B中必须要都有这个变量。否则应该使用LeftKeys和RightKeys这两个参数,LeftKeys指定A中某个变量作为合并依据,RightKeys指定B中某个变量作为合并依据 。请看下面的例子。a、b是一个dataset类型数据,a包含了变量Key1,Var1;b包含了变量Key2,Var2;
a = dataset(\'a\' \'b\' \'c\' \'e\' \'h\'\',[1 2 3 11 17]\',\'VarNames\',\'Key1\' \'Var1\')
b = dataset(\'a\' \'b\' \'d\' \'e\'\',[4 5 6 7]\',\'VarNames\',\'Key1\' \'Var2\')
a =
Key1 Var1
\'a\' 1
\'b\' 2
\'c\' 3
\'e\' 11
\'h\' 17
b =
Key1 Var2
\'a\' 4
\'b\' 5
\'d\' 6
\'e\' 7
现在我们想合并两个数据集,以Key1作为合并依据,那么
c= join(a,b,\'key\',\'Key1\',\'Type\',\'inner\',\'MergeKeys\',true)
c =
Key1 Var1 Var2
\'a\' 1 4
\'b\' 2 5
\'e\' 11 7
但是当a,b中的变量不同时,例如b中的Key1不叫Key1,而是叫Key2,那么怎么合并呢,应该使用使用LeftKeys和RightKeys代替Keys.举个例子:
a = dataset(\'a\' \'b\' \'c\' \'e\' \'h\'\',[1 2 3 11 17]\',\'VarNames\',\'Key1\' \'Var1\')
b = dataset(\'a\' \'b\' \'d\' \'e\'\',[4 5 6 7]\', \'VarNames\',\'Key2\' \'Var2\')
%注意Key1变成了Key2
c= join(a,b,\'LeftKeys\',\'Key1\',\'RightKeys\',\'Key2\',\'Type\',\'inner\',\'MergeKeys\',true)
结果是
c =
Key1_Key2 Var1 Var2
\'a\' 1 4
\'b\' 2 5
\'e\' 11 7
参数二 Type
Type参数描述的是我们合并的方式,是返回两个数据 *** 有的部分,还是返回两个数据集中所有的观测值,或者返回某个数据集中的所有观测值。Type共有四个参数值,inner,outer,leftouter,rightouter.
首先我们看一下Type参数值为 inner时候的结果
cinner = join(a,b,\'key\',\'Key1\',\'Type\',\'inner\',\'MergeKeys\',true)
cinner =
Key1 Var1 Var2
\'a\' 1 4
\'b\' 2 5
\'e\' 11 7
结果返回a,b中Key1都有的‘a’,’b’,’c’的观测值。所以inner表示返回两个数据集的共有部分。
再看一下Type为outer时候的结果
couter =
Key1 Var1 Var2
\'a\' 1 4
\'b\' 2 5
\'c\' 3 NaN
\'d\' NaN 6
\'e\' 11 7
\'h\' 17 NaN
很显然,a中Key1变量没有 d这个值,b中Key1没有c,h这个值,但是结果中还是包含了这些观测值。所以outer表示返回数据集的所有观测值。
leftouter,与outer的区别在于leftouter表示,当A中有一个关键变量值而A中却没有的时候,依然返回该观测值。例如
cleftouter = join(a,b,\'key\',\'Key1\',\'Type\',\'leftouter\', \'MergeKeys\',true)
cleftouter =
Key1 Var1 Var2
\'a\' 1 4
\'b\' 2 5
\'c\' 3 NaN
\'e\' 11 7
\'h\' 17 NaN
所以leftouter返回A中所有的观测值。
rightouter这个参数值则和leftouter这个相反。
crightouter = join(a,b,\'key\',\'Key1\',\'Type\',\'rightouter\', \'MergeKeys\',true)
crightouter =
Key1 Var1 Var2
\'a\' 1 4
\'b\' 2 5
\'d\' NaN 6
\'e\' 11 7
参数三 MergeKeys
最后我们看一下 MergeKeys这个参数,故名思议,这个参数表示是否合并关键变量。当MergeKeys为true时,结果只返回一个关键变量。当MergeKeys为false时,结果返回两个关键变量,一个来自与A,一个来自与B. 让我们看一下这个例子
couter = join(a,b,\'key\',\'Key1\',\'Type\',\'inner\', \'MergeKeys\',false)
couter =
Key1_left Var1 Key1_right Var2
\'a\' 1 \'a\' 4
\'b\' 2 \'b\' 5
\'e\' 11 \'e\' 7
couter = join(a,b,\'key\',\'Key1\',\'Type\',\'inner\', \'MergeKeys\',true)
couter =
Key1 Var1 Var2
\'a\' 1 4
\'b\' 2 5
\'e\' 11 7
输出项 [C IA IB]
C为返回的数据集,IA,IB分别为索引,A(IA,varName)对应着C中含有A数据集的元素。例如
[c,IA,IB]=join(a,b,\'LeftKeys\',\'Key1\',\'RightKeys\',\'Key2\',\'Type\',\'inner\',\'MergeKeys\',true)
c =
Key1_Key2 Var1 Var2
\'a\' 1 4
\'b\' 2 5
\'e\' 11 7
IA =
1
2
4
IB =
1
2
4
>> a(IA,:)
ans =
Key1 Var1
\'a\' 1
\'b\' 2
\'e\' 11
struct、cell array、dataset都属于带有OO思想的几个数据类型,在处理统计的数据整理的时候,dataset可以较为方便的与panel类的数据处理自然融合,如果说速度的话,可能是struct稍微快些,但这三者中最基本的却是cell array,它的处理最类似矩阵,但是在统计数据的处理中有时候引用还是不太方便或容易搞混掉,特别是在数据比较多,且是不是修改的情况下,用名字引用更好些。
在数据转换方面,三者之间可以完全自然的转换,包括含有自定义对象的情况下,都没有什么问题。
但在目前的实际使用中,觉得如果是对多家企业的分析,可能还是struct array作为函数的传递是最方便的,当然,如果要抽取panel数据的话,可以考虑转换为dataset或cell。
Excel里面如何将一行数据转化为列的形式?
选中改行数据,在其他行(最好是下面的行)单元格处点击右键,选择性粘贴,复选转置,点击确定。
如何用RStudio把Google-trends里的每星期数据转化为每月数据
做分析没有数据真是一大悲剧,正是无源之水、无根之木再加上无米之炊。通常我们搜寻到的数据格式主要有文本格式、Excel格式和SPSS格式。当然也会有从数据库等其它途径进来,这不在本文讨论范围内。
一般的文本格式导入,都可以用read.table命令把数据扔进R里面。Excel和Spss数据的话,可用相应软件将文件打开,观察数据结构后将其复制到剪贴板,然后一样可以用read.table(\'clipboard\')扔到R里面。如果文件太大不好复制,那么可以利用Excel和Spss的导出功能,将数据导出成文本格式。
还有一种情况就是,你的计算机上没有安装Excel或是Spss,这数据导入就要用到RODBC扩展包了。首先装载RODBC包。然后输入数据文件的绝对路径(要注意是用/而不是\\)来定义连接,最后用数据抓取命令获取你需要的标签页数据内容(Sheet1)。
library(RODBC)
channel=odbcConnectExcel("d:/test.xls")
mydata=sqlFetch(channel,\'Sheet1\')这样简单的两个步骤就可以将Excel数据导入R的mydata变量中。如果是Excel2007格式数据则要换一个函数
channel=odbcConnectExcel2007(\'d:/test.xlsx\')
mydata=sqlFetch(channel,\'Sheet1\')导入spss的sav格式数据则要用到foreign扩展包,加载后直接用read.spss读取sav文件
library(foreign)
mydata=read.spss(\'d:/test.sav\')上面的函数在很多情况下没能将sav文件中的附加信息导进来,例如数据的label,那么建议用Hmisc扩展包的spss.get函数,效果会更好一些。
如何把Excel中的纵行数据转化为横行的呢?
把数据选项起来,点击“编辑--复制”,数据要放在哪里,先定光标,再点击“编辑--选择性粘贴”,在里面选择“重置”,这样,纵行的数据就跟横行交换了。
matlab 如何用插值给NAN赋值
我现在有个360*180的二维矩阵,然后里面有一些NAN值。这些NAN值不能去掉也不能改成0,因为会影响最后的结果,所以我想用插值的方法给NAN赋值。请问这个程序怎么编呐?谢谢!
参考技术A 第一列到倒数第二列都是nan,之后最后一列有值那么其他值以什么标准来填新值呢?
哪怕多知道第一列的值,中间的还可以根据一前一后两个值插值计算得出
如果有足够的数据,至少第一点和最后一点知道,还是可以通过interp1插值填充的
只是要处理一下避开nan点
假设你原来数据是a
使用find(isnan(a))可以返回所有数据中是nan的值的位置
可以根据其填充新值
以上是关于如何用MAtlab把多行数据转化为一列的主要内容,如果未能解决你的问题,请参考以下文章