簡體   English   中英

確定 tibble 是否分組

[英]Determine if a tibble is grouped or not

是否有一個函數來確定一個 tibble 是否是一個分組的。

我使用以下代碼在不縮小數據集的情況下創建聚合變量:

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

如果我使用 mutate,我有一個分組的 tibble。 如果我使用總結,我有一個簡單的小標題。

是否有像as.grouped()這樣的函數可以確定分組的字符?

函數is.grouped_df()is_grouped_df()都將返回一個 TRUE 邏輯,如果它是一個分組的 tibble,如果不是,則返回 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)

當然你知道你可以使用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

分組信息保存為屬性 例子:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM