R语言subset函数的用法

1、创建测试数据

> test <- as.data.frame(matrix(1:100,nrow = 10))
> test
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   1 11 21 31 41 51 61 71 81  91
2   2 12 22 32 42 52 62 72 82  92
3   3 13 23 33 43 53 63 73 83  93
4   4 14 24 34 44 54 64 74 84  94
5   5 15 25 35 45 55 65 75 85  95
6   6 16 26 36 46 56 66 76 86  96
7   7 17 27 37 47 57 67 77 87  97
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100

 

2、按照行进行筛选  

> subset(test,V1 == 3)  ##提取第一列等于3的行
  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
3  3 13 23 33 43 53 63 73 83  93

 

> subset(test,V1 >= 5)  ##提取第一列大于等于5的行
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
5   5 15 25 35 45 55 65 75 85  95
6   6 16 26 36 46 56 66 76 86  96
7   7 17 27 37 47 57 67 77 87  97
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100

 

> subset(test,V1 >=5 & V2 >= 18) ## 提取第一列大于等于5 而且第二列大于等于18的行
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100

 

> subset(test,V1 >= 5 | V2 <= 12) ## 提取第一列大于等于5 或者第二列小于等于12的行
   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   1 11 21 31 41 51 61 71 81  91
2   2 12 22 32 42 52 62 72 82  92
5   5 15 25 35 45 55 65 75 85  95
6   6 16 26 36 46 56 66 76 86  96
7   7 17 27 37 47 57 67 77 87  97
8   8 18 28 38 48 58 68 78 88  98
9   9 19 29 39 49 59 69 79 89  99
10 10 20 30 40 50 60 70 80 90 100

 

3、按照列进行筛选

> subset(test,select = 3) ## 提取第三列
   V3
1  21
2  22
3  23
4  24
5  25
6  26
7  27
8  28
9  29
10 30

 

> subset(test,select = c(2,5,7)) ## 提取第2、5、7列
   V2 V5 V7
1  11 41 61
2  12 42 62
3  13 43 63
4  14 44 64
5  15 45 65
6  16 46 66
7  17 47 67
8  18 48 68
9  19 49 69
10 20 50 70

 

> subset(test,select = -c(2,5,7)) ##提取2、5、7列以外的所有列
   V1 V3 V4 V6 V8 V9 V10
1   1 21 31 51 71 81  91
2   2 22 32 52 72 82  92
3   3 23 33 53 73 83  93
4   4 24 34 54 74 84  94
5   5 25 35 55 75 85  95
6   6 26 36 56 76 86  96
7   7 27 37 57 77 87  97
8   8 28 38 58 78 88  98
9   9 29 39 59 79 89  99
10 10 30 40 60 80 90 100

 

4、同时按照行、列进行筛选

subset(test,V1 >= 4 & V2 >= 18,select = c(1,3,5)) ## 按照行列筛选
   V1 V3 V5
8   8 28 48
9   9 29 49
10 10 30 50

 

> subset(test,V1 >= 4 & V2 >= 18,select = -c(1,3,5)) ##同上
   V2 V4 V6 V7 V8 V9 V10
8  18 38 58 68 78 88  98
9  19 39 59 69 79 89  99
10 20 40 60 70 80 90 100

 

posted @ 2020-10-03 11:37  小鲨鱼2018  阅读(10384)  评论(0编辑  收藏  举报