||
1.根据给定的一个向量来筛选另一个向量
> a
[1] "ANN" "AW2" "AW1" "CRN" "W0" "UW1" "UW2" "UW3" "UNN"
> b
[1] "ARN" "TNN" "BRN" "CRN" "AW2" "AW1" "W0" "UW1" "UW2"
[10] "UW3" "ANN" "UNN" "TUN1" "TUN2"
a,b 两个向量,现在要根据a对b进行筛选,
> match(b,a) ########得到匹配上的a中元素的下标
[1] NA NA NA 4 2 3 5 6 7 8 1 9 NA NA
> b[match(b,a)] ###3##得到能够匹配上的元素
[1] NA NA NA "CRN" "TNN" "BRN" "AW2" "AW1" "W0" "UW1" "ARN"
[12] "UW2" NA NA
> b%in%a ##########
[1] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[12] TRUE FALSE FALSE
> b[b%in%a] ####提取匹配到的元素效果很好
[1] "CRN" "AW2" "AW1" "W0" "UW1" "UW2" "UW3" "ANN" "UNN"
2.根据特定顺序来排序一个向量(这个有点难度,不太好理解)
> c=b[b%in%a]
> c
[1] "CRN" "AW2" "AW1" "W0" "UW1" "UW2" "UW3" "ANN" "UNN"
虽然获取了匹配的向量,想把c按a的顺序进行排列
> a
[1] "ANN" "AW2" "AW1" "CRN" "W0" "UW1" "UW2" "UW3" "UNN"
> match(c,a) #####先获取c在a中的下标位置
[1] 4 2 3 5 6 7 8 1 9
> order(match(c,a)) #####对获得的下标进行排序
[1] 8 2 3 1 4 5 6 7 9
> c[order(match(c,a))] #######得到特定顺序的向量
[1] "ANN" "AW2" "AW1" "CRN" "W0" "UW1" "UW2" "UW3" "UNN"
#########################################################################################
3.对数据框变量名进行筛选,并且让变量按特定顺序排列
> data1
ARN TNN BRN CRN AW2 AW1 W0 UW1 UW2 UW3 ANN UNN TUN1 TUN2
ARN NA 8 10 4 7 5 7 6 7 5 6 3 8 5
TNN 8 NA 6 6 6 3 5 7 6 11 6 13 6 9
BRN 10 6 NA 1 18 3 4 2 3 3 16 1 2 2
> trait
[1] "ANN" "AW2" "AW1" "CRN" "W0" "UW1" "UW2" "UW3" "UNN"
> data2=subset(data1,select =trait) ##### 可以按trait 进行筛选变量,并得到一定的顺序
> data2
ANN AW2 AW1 CRN W0 UW1 UW2 UW3 UNN
ARN 6 7 5 4 7 6 7 5 3
TNN 6 6 3 6 5 7 6 11 13
4.对数据框列名进行筛选,并且让变量按特定顺序排列
> data3=data2[row.names(data2)%in%trait,] #######先按向量筛选
> data3
ANN AW2 AW1 CRN W0 UW1 UW2 UW3 UNN
CRN 1 1 3 NA 8 12 7 11 13
AW2 18 NA 2 1 1 1 2 2 1
AW1 3 2 NA 3 5 4 3 4 2
W0 2 1 5 8 NA 12 7 6 5
UW1 1 1 4 12 12 NA 8 9 9
UW2 1 2 3 7 7 8 NA 9 6
UW3 2 2 4 11 6 9 9 NA 16
ANN NA 18 3 1 2 1 1 2 1
UNN 1 1 2 13 5 9 6 16 NA
> data3[row.names(data3)[order(match(row.names(data3),trait))],] #####按特定向量拍顺序
ANN AW2 AW1 CRN W0 UW1 UW2 UW3 UNN
ANN NA 18 3 1 2 1 1 2 1
AW2 18 NA 2 1 1 1 2 2 1
AW1 3 2 NA 3 5 4 3 4 2
CRN 1 1 3 NA 8 12 7 11 13
W0 2 1 5 8 NA 12 7 6 5
UW1 1 1 4 12 12 NA 8 9 9
UW2 1 2 3 7 7 8 NA 9 6
UW3 2 2 4 11 6 9 9 NA 16
UNN 1 1 2 13 5 9 6 16 NA
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-23 11:44
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社