确定是否对tibble进行了分组

时间:2017-03-07 18:33:55

标签: r dplyr

是否有确定某个组合是否为分组的函数。

我使用以下代码创建聚合变量而不缩小数据集:

mydataset %>% select(count, group) %>%
  group_by(group) %>%
  mutate(count_group = sum(count))

如果我使用mutate,我有一个分组的tibble。如果我使用摘要,我有一个简单的tibble。

是否有一个函数,如as.grouped(),它允许确定一个组合的字符?

3 个答案:

答案 0 :(得分:5)

如果函数is.grouped_df()is_grouped_df()分组为tibble,则它们都将返回TRUE逻辑,如果不是,则返回FALSE。

# Create a tibble    
df <- tibble(x = c(5, 2, NA))
# Group by column 'x'
gdf <- group_by(df, x)
# Returns FALSE
is.grouped_df(df)
# Returns TRUE
is.grouped_df(gdf)

答案 1 :(得分:2)

当然您知道可以使用ungroup()删除任何分组。无论如何,有很好的方法来确定数据帧是否已分组,这只是通过打印数据帧。分组变量将显示在顶部。

dataframe <- data_frame('group' = c('a','a','b'),
                        'value' = c(1,2,3))

dataframe %>% group_by(group)

Source: local data frame [3 x 2]
**Groups: group [2]**

  group value
  <chr> <dbl>
1     a     1
2     a     2
3     b     3

答案 2 :(得分:0)

有关分组的信息另存为attribute。示例:

library("tidyverse")
a <- mtcars %>% group_by(cyl)
attributes(a)
$names
 [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear"
[11] "carb"

$row.names
 [1] "Mazda RX4"           "Mazda RX4 Wag"       "Datsun 710"
 [4] "Hornet 4 Drive"      "Hornet Sportabout"   "Valiant"
 [7] "Duster 360"          "Merc 240D"           "Merc 230"
[10] "Merc 280"            "Merc 280C"           "Merc 450SE"
[13] "Merc 450SL"          "Merc 450SLC"         "Cadillac Fleetwood"
[16] "Lincoln Continental" "Chrysler Imperial"   "Fiat 128"
[19] "Honda Civic"         "Toyota Corolla"      "Toyota Corona"
[22] "Dodge Challenger"    "AMC Javelin"         "Camaro Z28"
[25] "Pontiac Firebird"    "Fiat X1-9"           "Porsche 914-2"
[28] "Lotus Europa"        "Ford Pantera L"      "Ferrari Dino"
[31] "Maserati Bora"       "Volvo 142E"

$class
[1] "grouped_df" "tbl_df"     "tbl"        "data.frame"

$groups
# A tibble: 3 x 2
    cyl .rows
  <dbl> <list>
1     4 <int [11]>
2     6 <int [7]>
3     8 <int [14]>

attributes函数可用于检查分组属性的存在:

any(names(attributes(a)) == "groups")