R语言把大量记录型数据成分转换矩阵成矩阵

后使用快捷导航没有帐号?
查看: 13585|回复: 28
R中数组、矩阵、数据框有什么区别
高级会员, 积分 629, 距离下一级还需 371 积分
论坛徽章:1
见标题,这个问题想问很久了
中级会员, 积分 452, 距离下一级还需 48 积分
论坛徽章:3
翻译R in aNutshell的句子 (详见书中p22-p24):
一个数组是一个多维的向量 (我想 一维数组==向量)
& a &- array(c(1,2,3,4,5,6,7,8,9,10,11,12),dim=c(3,4)) #二维数组
一个矩阵只是一个二维的数组
& m &- matrix(data=c(1,2,3,4,5,6,7,8,9,10,11,12),nrow=3,ncol=4)&&#指定行数和列数
但数组的维度可以多于二维,例如
& w &- array(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18),dim=c(3,3,2))
data frame是一个包括了多个等长度的命名向量的列表,和数据库表或电子表格比较像
#三个向量,长度相等,数据类型不一样
& teams &- c(&PHI&,&NYM&,&FLA&,&ATL&,&WSN&)
& w &- c(92, 89, 94, 72, 59)
& l &- c(70, 73, 77, 90, 102)
#组合成data frame
& nleast &- data.frame(teams,w,l)
& &teams w& &l
1 PHI& &&&92 70
2 NYM& &89 73
3 FLA& &&&94 77
4 ATL& &&&72 90
5 WSN& &59 102
高级会员, 积分 597, 距离下一级还需 403 积分
论坛徽章:1
这个是个好问题啊!我也不是很清晰
金牌会员, 积分 1161, 距离下一级还需 1839 积分
论坛徽章:2
在我的理解是
数组是一组类型相同的值。
矩阵就是一个多维数组。
数据框是一个特殊的对象,类似数据库里的表的概念。
说的不对大家踊跃讨论啊。
金牌会员, 积分 1140, 距离下一级还需 1860 积分
论坛徽章:7
数组可以有多维
矩阵就是一个二维数组
数据框不局限与数
高级会员, 积分 629, 距离下一级还需 371 积分
论坛徽章:1
xhhjj 发表于
数组是相同对象的多维
矩阵是二维数组,是数组的子集,
数据框还不太清楚
为什么矩阵是二位数组然后矩阵又是数组的子集呢
高级会员, 积分 920, 距离下一级还需 80 积分
论坛徽章:1
数组是一行的呀~然后矩阵是矩形的。。。哈哈。。。。二维。。。数据框的话由又数组组成,可以有行名和列名的~
中级会员, 积分 337, 距离下一级还需 163 积分
论坛徽章:1
数组是按一定规则存放的同一类型数据的数据结构,可以是1维,也可以是多维。
在R语言中矩阵可以看做是二维数组。但在其它语言中,矩阵也可以用链表来表达的。
数据框其实就是我们一般指的表结构,数据框是2维的,但列之间的数据类型可以不同。
列表则是非常自由的数据结构,可以看做是复杂对象类型。
新手上路, 积分 12, 距离下一级还需 38 积分
论坛徽章:0
矩阵是特殊类型的数组,即维数等于2的数组。数组的特性的是其元素都是同一类型的,比如:数值型、字符型或逻辑型,所有元素都只能是同一种类型,数值型都是数值型,字符型都是字符型。数据框中元素的类型就可以不同了,可以有些是数值型的,另外一些是字符型的,但是数据框要求各向量的维数必须相等,即各列的数据个数是一样的。列表是最包罗万象的对象类型,它的组成单位不仅数据类型可以不同,各列数据的长度也可以不等。所以从矩阵到数组再到数据框和列表,它们之间的逻辑关系应该是一层层往外扩展,反过来则应该是逐步包含的关系。
新手上路, 积分 22, 距离下一级还需 28 积分
论坛徽章:0
为什么矩阵是二位数组然后矩阵又是数组的子集呢
数组是多维的,矩阵是二维的,数组可由多个矩阵组成?这么理解对么
扫一扫加入本版微信群扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
R语言中 关于求一个矩阵的相关系数的问题最近刚开始学R 所以很多方面还不明白 现在遇到了一个问题 我现在有一个矩阵 但是它有行名跟列名 现在我想对它求相关系数 cor() 可是运行的时候 总是出现这样的错误:错误于cor(dd) :'x'必需为数值 请问我该怎么改我的命令语句啊
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
可能你的矩阵里面有 character吧, 先试试 as.numeric. 如果还是不能解决,请给我留言.
不好意思 看到您的答案有点晚 我试了你的这个方法 可是还是不行 现在出现的是这样的错误:错误于inherits(x, "data.frame") : (串列)对象不能强制改变成'double'种类
不知道这是怎么回事了
其他类似问题
扫描下载二维码用R语言做数据分析——散点图矩阵
用R语言做数据分析——散点图矩阵
之前了解到,散点图可用来描述两个连续型变量间的关系。之后的几篇文章,我们首先描述一个二元变量关系(x-y),然后探究各种通过添加额外信息来增强图形表达功能的方法。接着,我们将学习如何把多个散点图组合起来形成一个散点图矩阵,以便可以同时浏览多个二元变量关系。最后,通过添加第三个连续型变量,我们能把二维图形扩展到三维,包括三维散点图和气泡图,它们能够帮助你更好地更迅速理解三变量间的多元关系。plot()函数散点图R语言创建散点图的基础函数是plot(x,y),简单展示一个例子:& attach(mtcars)& plot(wt,mpg,main=&Basic Scatter plot of MPG vs,Weight&,+ xlab = &Car Weight (1bs/1000)&,ylab = &Miles Per Gallon&, pch=19)& abline(lm(mpg~wt),col=&red&,lwd=2,lty=1)& lines(lowess(wt,mpg),col=&blue&,lwd=2,lty=2)从图中可以得出结论:随着车重的增加,每加仑英里数减少。虽然他们并不是完美地线性关系。abline()函数用来添加最佳拟合的线性直线,而lowess()函数则用来添加一条基于局部加权多项式回归拟合的平滑曲线。scatterplot()函数散点图car包中的scatterplot()函数增强了散点图的许多功能,它可以很方便地绘制散点图,,并且能添加拟合曲线、边界箱线图和置信椭圆,还可以按子集绘图和交互式地识别点,代码案例如下:& scatterplot(mpg~wt | cyl,data=mtcars,lwd=2,+ main=&Basic Scatter plot of MPG vs,Weight by # Cylinders&,+ xlab = &Weight of Car (1bs/1000)&,+ ylab = &Miles Per Gallon&,+ legend.plot = TRUE,+ id.method=&identify&,+ labels = row.names(mtcars),+ boxplots=&xy&)默认地,各子集会通过颜色和图形符号加以区别,并同时绘制线性拟合和平滑拟合曲线。平滑拟合默认需要五个单独的数据点。id.method 选项的设定表明可通过鼠标单击来交互式地识别数据点。labels选项的设定表明可通过点的行名称来识别点。legend.plot选项表明在边界加图例,而boxplots选项用于绘制边界箱线图。散点图矩阵R语言至少有四种创建散点图矩阵的实用函数。pairs()函数可以创建基础的散点图矩阵,例如,我们创建一个包含mpg、disp、drat和wt四个变量的散点图矩阵:从图中可以看到所有指定变量间的二元关系。值得注意的是,主对角线的上方和下方的六福散点图是相同的。通过参数调整可以之战士下三角或者上三角的图形。例如,选项upper.panel = NULL将只生成下三角的图形。car包中的scatterplotMatrix()函数也可以生成散点图矩阵,并有以下可选操作:以某个因子为条件绘制散点图矩阵;包含线性和平滑拟合曲线;在主对角线防止箱线图、密度图或者直方图;在各单元格的百年姐添加轴须图。&library(car)& scatterplot.matrix(~mpg+disp+drat+wt, data=mtcars, spread=FALSE,lty.smooth=2,main=&Scatter Plot Matrix via car Package&)从图中可以看到,线性和平滑拟合曲线被默认添加,主对角线处添加了核密度曲线和轴须图。spread=FALSE选项表示不添加分散度和对称信息的直线,lty.smooth=2设定平滑拟合曲线使用虚线。gclus包中cpairs()函数提供了一个有趣的散点图矩阵变种,它含有重排矩阵中变量位置的选项,可以让相关性更高的变量更靠近主对角线。该函数还能对各单元进行颜色编码来展示变量间的相关性大小。下面考虑mpg、wt、disp和drat间的相关性:&#从mtcars数据框中选择所需变量,并计算它们相关系数的绝对值& cor(mtcars[c(&mpg&,&wt&,&disp&,&drat&)])mpg wt disp dratmpg 1....6811719wt -0....7124406disp -0....7102139drat 0....0000000& library(gclus)& mydata &- mtcars[c(1,3,5,6)]& mydata.corr &- abs(cor(mydata))#使用dmat.color()函数获取绘图的颜色,给定一个对称矩阵,函数将返回一个颜色矩阵& mycolors &- dmat.color(mydata.corr)#通过order.single()函数重排对象,使相似的对象更为靠近& myorder &- order.single(mydata.corr)#配置相关参数,绘制散点矩阵& cpairs(mydata,myorder,panel.colors = mycolors,gap=.5,+ main=&Variables Ordered and Colored by Correlation&)从图中可以看出,相关性最高的变量对是车重和排量,以及每加仑英里数与车重(标记红色,离主对角线最近)。相关性最低的是后轴与每加仑英里数(标记黄色,离主对角线最远)。当变量数众多、变量间的相关性变化很大时,该方法特别有用。
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 对各大八卦事件的看法跟解析
作者最新文章长数据与宽数据的转换丨R语言
在R中,如何将宽格式的数据集转换为长格式数据集?「注:对于R里的许多函数,长格式的数据集可能比宽格式数据集更受欢迎,然而在SPSS中,宽格式数据集则更为常用。」
接下来,我们会对下列两套方法进行演示:
tidyr包的gather()函数和spread()函数,这也是reshape2包的一个新接口。
reshape2包的melt()和dcast()函数。
还有一些其他的方法也能达成上文的目标,但我们在这里不做介绍,因为它们用起来略显复杂:
R内置的reshape()函数,需要注意的是它并不来自于reshape2包。
stack()函数和unstack()函数。
下面几个数据集包含的数据一致,但数据的长宽格式不同,下文中我们将一一演示下列数据集格式之间的相互转换。
由“宽”转“长”
使用gather函数:
在该例子中,我们运用了control:cond2语句来选择列control、列cond2以及它们之间的所有数据列,这是基于列位置的选择方式,当然,你也可以通过直接输入列名来确定要加入整合的目标数值列,如:
如果你想要程序化地使用gather()函数,你也许需要用一个变量来代表要整合的目标列名。这时候你应当使用gather_()函数而不是gather(),从而先能够将列名转换为字符串。
选读部分:重命名并排序变量列中的因素层级。
由“长”转“宽”,使用spread函数:
选读部分:数据框美化。
因素型变量的层级次序决定了数据列的排列顺序,而层级次序也同样可以在重塑前被更改或是在之后被重新排序。
reshape2包:
由“宽”转“长”,使用melt函数: Use melt:
下列为melt函数中的若干选项,灵活运用它们有时能简化我们的工作流程:
如果我们不对measure.vars进行设定,在melt过程中就是自动地将所有其他变量都作为id.vars。反之,如果我们不设定id.vars,所有的其他变量则会被视为id.vars。
如果我们没有对variable.name作明确指定,那么函数会默认地将整合后构建的列命名为"variable";如果不设定value.name,那么对应数值列的默认名称将是"measurement"。
选读部分:重命名变量列中的因素层级。
由“长”转“宽”
下列代码的主要思路是运用dcast函数对数据进行重塑,这个函数的目标对象针对于数据框,如果我们想对数组或矩阵进行类似的处理,请使用acast函数作为替代。
选读部分:数据框美化。
因素型变量的层级次序决定了数据列的排列顺序,而层级次序也同样可以在重塑前被更改或是在之后被重新排序。
原文链接:http://mp./s?__biz=MzA5NDQ3MDI4NA==&mid=&idx=1&sn=2e85ce82db6fbffcfad9cc#rd
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点}

我要回帖

更多关于 成分转换矩阵 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信