2017-06-14 50 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

相關問題