R语言中,已知一个m行n列的数据框,每列的列名为字符串,如s1,s2,s3,s4...,如何根据列名求该列的索引?

Python08

R语言中,已知一个m行n列的数据框,每列的列名为字符串,如s1,s2,s3,s4...,如何根据列名求该列的索引?,第1张

% 使用 reshape(X ,m,n)函数

% 先了解一下reshape的基本用法

% 简而言之就是将矩阵X—>m*n的新矩阵

% 例如:将 3*4的A矩阵—>2*6的B矩阵

A =[1    4    7    10

    2    5    8    11

    3    6    9    12]

B = reshape(A,2,6)

% 等价于 B = reshape(A(:),2,6)

% 等价于 B = reshape(A(:),2,[])

% 上面运行结果为

B =[ 1     3     5     7     9    11

     2     4     6     8    10    12]

 

% 分析:

% 因为 MATLAB会将A转换成A(:)

% 按列输出 A(:)=[1,2,3,4,5,6,7,8,9,10,11,12]

% 对B,注意B是2行6列,同样MATLAB会按列输入

% B =[ 1     3     .     .     .    11

%      2     .     .     .    10    12]

% 你说的意思,是不是矩阵A的每一列,按列元素拍在一行?

% 第一种方法:

    C = reshape(A,1,[])

% 第二种方法:

    C=A(:)'

 由于没能完全理解题主的意思,题主可以根据我说的,按照reshape函数来解决问题

阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通

过函数matrix()创建矩阵。一般使用格式为

其中vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选

的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)

还是按列填充(byrow=FALSE),默认情况下按列填充

数组(array)与矩阵类似,但是维度可以大于2, 数组可通过array函数创建,形式如下:

myarray <- array(vector, dimensions, dimnames)

其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大

值,而dimnames是可选的、各维度名称标签的列表

由于不同的列可以包含不同模式(数值型、字符型等)的数据,数据框的概念较矩阵来说更

为一般。它与你通常在SAS、SPSS和Stata中看到的数据集类似。数据框将是你在R中最常处理的

数据结构

数据框可通过函数data.frame()创建

其中的列向量col1、col2、col3等可为任何类型(如字符型、数值型或逻辑型)。每一列的名

称可由函数names指定

每一列数据的模式必须唯一,不过你却可以将多个模式的不同列放到一起组成数据框。由于数据框与分析人员通常设想的数据集的形态较为接近,我们在讨论数据框时将交替使用术语列和

变量

类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。因子在R中非常重要,因为它决定了数据的分析方式以及如何进行视觉呈现

函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1...k](其中k是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上

对于字符型向量,因子的水平默认依字母顺序创建。这对于因子status是有意义的,因为

“Excellent”“Improved”“Poor”的排序方式恰好与逻辑顺序相一致。如果“Poor”被编码为

“Ailing”,会有问题,因为顺序将为“Ailing”“Excellent”“Improved”。如果理想中的顺序是“Poor” “Improved”“Excellent”,则会出现类似的问题。按默认的字母顺序排序的因子很少能够让人满意.

你可以通过指定levels选项来覆盖默认排序。例如:

各水平的赋值将为1=Poor、2=Improved、3=Excellent。请保证指定的水平与数据中的真实值

相匹配,因为任何在数据中出现而未在参数中列举的数据都将被设为缺失值。数值型变量可以用levels和labels参数来编码成因子。如果男性被编码成1,女性被编码成2,则以下语句

列表(list)是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合