是否有确定某个组合是否为分组的函数。
我使用以下代码创建聚合变量而不缩小数据集:
mydataset %>% select(count, group) %>%
group_by(group) %>%
mutate(count_group = sum(count))
如果我使用mutate,我有一个分组的tibble。如果我使用摘要,我有一个简单的tibble。
是否有一个函数,如as.grouped()
,它允许确定一个组合的字符?
答案 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")