引用tibble对象中的第一组数据
Reference the first group of data in a tibble object
我是 tibble 包的新手,想知道如何通过变量引用组 a data_frame 之后的第一组数据。这是一些示例代码:
library(tibble)
library(dplyr)
data("iris")
my_data <- group_by(as_data_frame(iris), Species)
我的问题是如何引用 my_data 中的第一组数据。
另一个问题是 data_frame 对象如何存储值?它是否将 data_frame 分组存储为带有几个小 data_frame 的 'list'?
查看 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
至select行中您感兴趣的group 1 = $indices[[1]]
:
my_data[attributes(my_data)$indices[[1]],]
另一方面,您可以简单地使用 dplyr
:
中的过滤函数
my_data <-as_data_frame(iris)
filter(my_data,Species == "setosa")
我是 tibble 包的新手,想知道如何通过变量引用组 a data_frame 之后的第一组数据。这是一些示例代码:
library(tibble)
library(dplyr)
data("iris")
my_data <- group_by(as_data_frame(iris), Species)
我的问题是如何引用 my_data 中的第一组数据。
另一个问题是 data_frame 对象如何存储值?它是否将 data_frame 分组存储为带有几个小 data_frame 的 'list'?
查看 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
至select行中您感兴趣的group 1 = $indices[[1]]
:my_data[attributes(my_data)$indices[[1]],]
另一方面,您可以简单地使用
中的过滤函数dplyr
:my_data <-as_data_frame(iris) filter(my_data,Species == "setosa")