R语言之数据处理

R语言之数据处理

一、向量处理


1.选择和显示向量
data[1]
data[3]
data[1:3]
data[-1]:除第一项以外的所有项
data[c(1,3,4,6)]
data[data>3]
data[data<5|data>7]:小于5或大于7的所有项
which(data == max(data)):显示数值最大的那个项序号
data[seq(1,length(data),2)]:每隔一段取出特定值,1为从第一项开始,length(data)表示到向量的最后一项结束,2表示间隔两项

2.向量的排序

sort()函数可以为向量排序,默认为升序,选项na.last默认为去掉NA项,TRUE为包含NA并放置最后,FALSE为包含NA并放置最前面,对于重复数值,sort采取的是并列排序的方式
sort(data,na.last = NA)
sort(data,na.last = TRUE)
sort(data,na.last = FALSE)


order()函数,获得向量的排序号,选项na.last默认为TRUE包含NA并将其放置最后,NA为不包含NA项,FALSE为包含NA并放置最前面
oder(data,na.last = NA)
order(data,na.last = TRUE)
order(data,na.last = FALSE)


rank()函数,也是向量排序函数,和sort()不同,对于重复数值,rank不会并列,而且采用其他方式,默认为采取去平均数。选项ties.method为处理重复数值的方式,na.last为处理NA值的方式,keep为保留NA值
rank(data,ties.method=average,na.last="keep")

3.向量返回逻辑值

直接使用向量进行等号判断即可,如
> data == 100
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE


二、矩阵和数据框处理

1.选择和显示矩阵或数据框

和向量一样,选择矩阵和数据框也可以使用[],但是需要指定行和列,通用格式为
object[row,column]

data[3,3]:选择第三行第三列的数据
data[3,1:4]:选择第三行和1-4列的数据
data[1:2,1:3]:选择第1-2行、第1-3列的数据
data[,1]:选择第一列的全部数据,以向量形式返回
data[1,]:选择第一行全部数据
data[1]:对于数据框,显示第一列的数据,以列表形式返回,对于矩阵,将视为索引号,显示索引号对应的值。
data[c(1,3,5,7),]
data[c(1,3,5,7).-4]:选择1,3,5,7行、除第四列以外的所有值。
data[c(1,3,5,7),"列名"],选项1,3,5,7行,和某列的值

索引号:矩阵的索引方式是从第一列第一行开始,依次读取每一列,可用test.matrix

2.矩阵和数据框的排序

和向量一样,也使用sort、order、rank函数进行排序,但是sort可用对整个矩阵排序,但是不能对整个数据框排序,应用数据框的时候,应选择其中一部分进行。

三、列表的处理

列表经常存放不同结构的数据,因此在处理列表数据前,应先查看一下列表内容的数据结构,使用str函数进行查看


1.选择和显示列表数据

data[1]:选择列表中的第1个元素

2.列表的排序

只能对列表中的某个元素进行排序,而且要使用$符号进行选择

sort(data$one):对data列表中的one元素进行排序


四、数据对象的基本操作

1.查看及设置行和列名
names():可以得到数据对象行和列的名称,可用于列表和数据框,对矩阵无效

row.names()和colnames():可得到数据对象行或列的名称,可用于数据框和矩阵,对列表无效

dimnames():可得到数据对象行和列的名称,先显示行名,后显示列名,对数据框和矩阵有效,对列表无效,因为列表并没有行和列。

可同时使用上述函数对名称进行设置


2.行列转置

可使用t()函数进行行列转置,无论之前是何种数据结构,转置之后均变为矩阵结构。

五、构造数据对象

1.构造列表

将不同数据结构的对象合并在一起的唯一方式是使用列表,创建列表用list()函数。

2.构造数据框
构造数据框使用data.frame()函数,数据框是数据列的集合,数据列可以是数值类型和文本类型,如果是文本类型,数据框将其视为因子,数字格式如果长度不同,则会以NA补齐。


3.构造矩阵

cbind():将向量组成矩阵的列
rbind():将向量组成矩阵的行
如果向量中既有数字也有字符,那么数字将会被转换为字符


此外,一般都是有matrix()函数,matrix(data,nrow=2),必须指定正确的行或列数,也就是说行货列能够被数据个数整除,否则会报错

六、数据对象的转换

as.data.frame():转换为数据框
as.character():转换为因子
as.matrix():转换为矩阵
as.list():转换为列表
as.table():转换为表格

可以通过is.函数判断数据对象的类型,如:is.data.frame判断,返回的是逻辑值。也可以通过class()函数,直接返回数据对象类型。

列表的转换比较麻烦,最好是先转为数据框再转为其他,数据框不能直接转换为表格,需要先转换为矩阵,再转换为表格。

stack()函数对于转换数据框有特别的用处,因为它可以创建一列数值和一列因子的数据框形式。unstack是它的反向操作数据分析师培训

此外,stack()函数还可以加入一些选项,得到更多的效果

例如,有数据框data如下:
  height    plant water
      9 vulgaris    lo
     11 vulgaris    lo
      6 vulgaris    lo
     14 vulgaris   mid
     17 vulgaris   mid
     19 vulgaris   mid
     28 vulgaris    hi
     31 vulgaris    hi
     32 vulgaris    hi
10       sativa    lo
11       sativa    lo
12       sativa    lo
13     14   sativa   mid
14     17   sativa   mid
15     15   sativa   mid
16     44   sativa    hi
17     38   sativa    hi
18     37   sativa    hi

有三列数据,一列数值两列因子,我们可做如下操作

> unstack(data,form=height~plant)
  sativa vulgaris
           9
          11
           6
    14       14
    17       17
    15       19
    44       28
    38       31
    37       32

> unstack(data,form=height~water)
  hi lo mid
1 28  14
2 31 11  17
3 32  19
4 44  14
5 38  17
6 37  15

> cc<-unstack(data,form=height~water)
> stack(cc,select = c(hi,lo))
 values ind
     28  hi
     31  hi
     32  hi
     44  hi
     38  hi
     37  hi
      lo
     11  lo
      lo
10      lo
11      lo
12      lo
原文地址:https://www.cnblogs.com/amengduo/p/9587156.html