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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM