引用tibble对象中的第一组数据

时间:2017-06-14 18:42:28

标签: r dplyr tibble

我是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?

1 个答案:

答案 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
  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")