我是tibble软件包的新手,想知道如何通过变量对data_frame进行分组后引用第一组数据。以下是一些示例代码:
library(tibble)
library(dplyr)
data("iris")
my_data <- group_by(as_data_frame(iris), Species)
我的问题是如何引用my_data中的第一组数据。
另一个问题是data_frame对象如何存储值?它是否将分组的data_frame存储为&#39;列表&#39;有几个小的data_frame?
答案 0 :(得分:1)
在查看attributes
后,您可能会看到group_by
功能将数据分为3个部分,由$indices
表示。
attributes(my_data)
$names
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
$row.names
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
[25] 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
[49] 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
[73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
[97] 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
[121] 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
[145] 145 146 147 148 149 150
$class
[1] "grouped_df" "tbl_df" "tbl" "data.frame"
$vars
$vars[[1]]
Species
$drop
[1] TRUE
$indices
$indices[[1]]
[1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[33] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
$indices[[2]]
[1] 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
[33] 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
$indices[[3]]
[1] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
[25] 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
[49] 148 149
$group_sizes
[1] 50 50 50
$biggest_group_size
[1] 50
$labels
Species
1 setosa
2 versicolor
3 virginica
如您所希望的那样使用group_by
,您可以引用那些$indices
来选择您感兴趣的行group 1 = $indices[[1]]
:
my_data[attributes(my_data)$indices[[1]],]
另一方面,您只需使用dplyr
中的过滤功能:
my_data <-as_data_frame(iris)
filter(my_data,Species == "setosa")