- ·上一篇:excel表格判断数据不足怎么查
- ·下一篇:excel表格怎么横起拉数字
R值用excel表格怎么弄
1.如何将Excell 数据导入R中
做分析没有数据真是一大悲剧,正是无源之水、无根之木再加上无米之炊。通常我们搜寻到的数据格式主要有文本格式、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函数,效果会更好一些。
2.如何用R软件或excel来求矩阵的特征值和特征向量丫,跪求大神~
用Excel求解矩阵特征值与特征向量,可以按以下方法办理: 1、求矩阵的特征值和特征向量是一个既基础又重要的数值计算问题。
通常我们可以用编写高级语言程序的方法加以解决,也可以使用专门的数学软件(如MATLAB等)来实现。本文给出的用Excel实现求矩阵的特征值和特征向量的方法,既不需要设计程序,也不需要专门的数学软件,只须在Excel中进行简单操作,就可以快速、直观地得到实矩阵的特征值和特征向量,且计算结果具有较高的精度。
2、在Excel中利用数组公式和数组常量建立并命名矩阵: 在Excel中,可以在一个单元格区域内通过逐个输入矩阵的各个元素来建立矩阵,还可以使用数组公式和数组常量更加方便地建立矩阵[1]。例如,可以通过下列操作建立矩阵: (1) 在Excel的工作表Sheet1中,选择单元格区域A1:D4; (2) 输入公式:={2,-1,0,0;-1,2,-1,0;0,-1,2,-1;0,0,-1,2}(顺便指出:在Excel的数组公式中,将矩阵元素用大括号{}括起来称为数组常量,其中不同列的元素用逗号隔开,不同行的元素用分号隔开; (3) 按Ctrl+Shift+Enter键,结束数组公式的输入,形成矩阵。
建立了矩阵之后,在Excel的数组公式中,就可以用矩阵所在的单元格区域A1:D4表示该矩阵;但若将该矩阵命名为A显然更便于使用,也便于理解公式的含义,方法如下: 选择该矩阵所在的单元格区域A1:D4;单击编辑栏左端的“名称”框,输入A,按回车键确认。此后,在当前工作薄的所有工作表中,就可以使用名称A在数组公式中代表该矩阵。
尤其需要指出的是:通过对矩阵命名,不仅能方便地实现跨工作表引用单元格区域,而且更重要的是:在复制公式时,Excel将名称(如A)按常量对待,所以更便于矩阵的运算和使用。类似地,我们还可以在单元格区域F1:I4中通过输入数组公式:{={1,0,0,0; 0,1,0,0; 0,0,1,0; 0,0,0,1}}建立4阶单位矩阵,并命名为I。
3、利用Excel求矩阵的特征值: 由于矩阵A的特征值λ就是特征方程det(A-λI)的根,因此可以利用Excel工具菜单中的“单变量求解”命令求矩阵的特征值。 例如,上述矩阵A在0.4附近的特征值的求解方法如下: (1) 在A6单元格中输入值0.4; (2) 在B6单元格中输入公式:=MDETERM(A-A6*I)=0,其中MDETERM为Excel提供的求矩阵行列式的函数; (3) 按Ctrl+Shift+Enter键,形成数组公式:{=MDETERM(A-A6*I)},于是B6单元格中的值0.1264即为特征多项式在 的值; (4) 单击“工具”菜单中的“单变量求解”命令,打开“单变量求解”对话框; (5) 在“目标单元格(E)”中输入或选择B6,在“目标值(V)”中输入0,在“可变单元格(C)”中输入或选择A6; (6) 单击“确定”按钮。
此时,A6单元格中的值0.381966011就是矩阵A在0.4附近特征值的近似值(顺便指出:在Excel“选项”对话框的“重新计算”选项卡中,通过设置“迭代计算”栏还可控制计算精度)。 4、求特征值对应的特征向量: 所谓逆幂法,就是取A的特征值λi的一个近似值λ,并取非零初始向量X0,按迭代公式: (其中符号‖·‖∞代表向量的按模最大分量,即) 进行迭代,当相邻两次迭代,Xk-1,Xk近似成比例时,则Xk即为矩阵A对应于特征值λi的近似特征向量。
例如,为求上例矩阵A的特征值λ=0.381966011对应的特征向量,我们取近似特征值为0.38,并取初始向量为(1,1,1,1),使用逆幂法进行迭代可以在Excel中进行如下操作: (1) 在工作表Sheet2中,先在单元格区域A1:A4中输入1,1,1,1形成初始向量X0; (2) 选择单元格区域B1:B4,输入公式:=MMULT(MINVERSE(A-0.38*I), A1:A4),按Ctrl+Shift+Enter键,形成数组公式计算出Y1 (注:其中MINVERSE, MMULT分别为Excel提供的计算逆矩阵和计算两个矩阵乘积的函数); (3) 在B5单元格中输入公式:=MAX(ABS(B1:B4)),按Ctrl+Shift+Enter键,形成数组公式计算出‖Y1‖∞; (4) 选择单元格区域C1:C4,输入公式:=B1:B4/B5,按Ctrl+Shift+Enter键,形成数组公式计算出逆幂法迭代一次后的向量X1=(0.618321,1,1,0.618321); (5) 选择B1:C5单元格区域,向右拖动C5右下角的填充柄,即得逆幂法的迭代序列: 逆幂法迭代3次,可得A的对应于近似特征值λ=0.381966011的近似特征向量为(0.618033989,1,1,0.618033989)。若与A的相应精确特征值λ=2-2cos(π/5)=0.3819660112…和特征向量(sin(π/5)/sin(2π/5),1,1,sin(π/5)/sin(2π/5))=(0.6180339887…,1,1,0.6180339887…)相比较,显然已具有较高的精度。
3.如何向R 中导入excel数据
做分析没有数据真是一大悲剧,正是无源之水、无根之木再加上无米之炊。通常我们搜寻到的数据格式主要有文本格式、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函数,效果会更好一些。
