2017-06-14 34 views
1

我是新来的Tibble包,想知道如何在变量组合一个data_frame之后引用第一组数据。以下是一些示例代码:引用第一组数据在一个Tibble对象中

library(tibble) 

library(dplyr) 

data("iris") 

my_data <- group_by(as_data_frame(iris), Species) 

我的问题是我如何引用my_data中的第一组数据。

另一个问题是data_frame对象如何存储值?它是否将分组的data_frame作为包含几个小数据框的“列表”存储?

+1

看一下'str(my_data)'和'attributes(my_data)'并且捅一下。这应该有助于你弄清楚事情的真相。 – Axeman

+0

@Axeman,感谢您的帮助和投票! – Jason

回答

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 
  1. 使用group_by你愿意,你可以参考这些$indices来选择您感兴趣的group 1 = $indices[[1]]行:

    my_data[attributes(my_data)$indices[[1]],]

  2. 在另一方面你也可以只需使用dplyr的过滤功能:

    my_data <-as_data_frame(iris) filter(my_data,Species == "setosa")

+0

感谢您的帮助! – Jason

相关问题