获得;Can';t不使用';不存在。”;当列与dplyr一起存在时

获得;Can';t不使用';不存在。”;当列与dplyr一起存在时,r,dplyr,R,Dplyr,我已将变量“county”列为一列,但当我尝试使用group_by_按以下方式对其进行聚合时: testing4 <- testing2 %>% group_by(across(-c(county, population))) %>% summarise(pop=sum(population)) 然而,当我 testing3 <- testing2 %>% group_by(year, state, stfips,

我已将变量“county”列为一列,但当我尝试使用group_by_按以下方式对其进行聚合时:

testing4 <- testing2 %>%
        group_by(across(-c(county, population))) %>%
        summarise(pop=sum(population))
然而,当我

testing3 <- testing2 %>%
        group_by(year, state, stfips, race) %>%
        summarise(pop = sum(population))

看起来像是插入一个
ungroup()
,因为第二步将起作用:要进行最小的比较,请比较

testing2 %>% group_by(across(-county))


看起来像是插入一个
ungroup()
,因为第二步将起作用:要进行最小的比较,请比较

testing2 %>% group_by(across(-county))

欢迎来到这里

对TIBLE进行分组时,分组后应用的所有函数都使用分组数据,不包括分组变量(
?group_by
)。事实上,您可以使用
cur_group()
?cur_overs
)使用/访问该函数中的(每个组都是临时新的)数据

因此,第1步:当您在分组的TIBLE(如您的)中使用
cross()
时,它为每个组使用不带分组变量的数据
cross()
(不带
.fnc
参数,默认值=NULL;
?cross
)从输入数据开始返回列出的变量,而不进行修改,在您的情况下,输入数据没有旧的分组变量!因此,不能在
cross()
中为分组的TIBLE使用分组变量

但是,步骤2:您也可以考虑<代码> GROPYBY()<代码>重写自己(参见<代码> GROPpI< < /C> >) 将这两者结合起来,如果变量已经是分组变量,则不需要列出要排除的变量。如果你要根据其他变量(重新)分组TIBLE:你可以删除你不想使用的其他变量!在计算新组时,这些变量(以及用于上一组的其他变量)已被排除。当新的

groupby
(评估
cross()
“by groups”;即,不带分组变量)加入结果时,它返回整个TIBLE分组,不带先前的分组变量,也不带您刚刚“添加”到排除项中的变量

如果您想将分组的TIBLE重新分组(不包括其他变量,但保留分组变量的子集),则可能会出现一个问题。无论如何,在这些情况下,您可以将调用
cross()
之外的那些“维护的”分组变量列在
groupby()
的调用中(它本身不“计算”任何内容(与
cross()
相反),因此它不使用分组TIBLE的部分(没有旧的分组变量))。这样,最后一个
groupby()
创建一个分组的TIBLE”,其中包含不在旧分组变量中的所有变量,不在新排除的变量中列出,加上在
cross()
之外报告的(旧)变量

下面是一个正在运行的()示例:

#安装程序包(“tidyverse”)
#安装软件包(“palmerpenguins”)
图书馆(tidyverse)
图书馆(palmerpenguins)
企鹅
#>#A tibble:344 x 8
#>物种岛比尔长度比尔深度鳍状肢长度身体质量
#>                                              
#>1阿德利火把…39.118.7181 3750
#>2阿德利火把…39.517.41863800
#>3阿德利火把…40.318195 3250
#>4阿德莉火把…不,不,不
#>5阿德利火把…36.7 19.3 193 3450
#>6阿德利火把…39.3 20.6 190 3650
#>7阿德利火把…38.9 17.8 181 3625
#>8阿德利火把…39.219.61954675
#>9阿德利火把…34.118.1193 3475
#>10阿德利火把42 20.2 190 4250
#>#…增加334行,增加2个变量:性别、年份
企鹅%>%
分组依据(物种、岛屿)%>%
分组人(跨(-c)(
以“账单”开头,
以(“鳍状肢”)开头,
以“body”开头
)))#物种和岛屿已经被排除在外
#>#A tibble:344 x 8
#>#群体:性别,年份[9]
#>物种岛比尔长度比尔深度鳍状肢长度身体质量
#>                                              
#>1阿德利火把…39.118.7181 3750
#>2阿德利火把…39.517.41863800
#>3阿德利火把…40.318195 3250
#>4阿德莉火把…不,不,不
#>5阿德利火把…36.7 19.3 193 3450
#>6阿德利火把…39.3 20.6 190 3650
#>7阿德利火把…38.9 17.8 181 3625
#>8阿德利火把…39.219.61954675
#>9阿德利火把…34.118.1193 3475
#>10阿德利火把42 20.2 190 4250
#>#…增加334行,增加2个变量:性别、年份
企鹅%>%
分组依据(物种、岛屿)%>%
小组成员(
跨越(-c)(
以“账单”开头,
以(“鳍状肢”)开头,
以“body”开头
)),
物种#“继续”使用物种进行分组
)
#>#A tibble:344 x 8
#>#组:性别、年份、物种[22]
#>物种岛比尔长度比尔深度鳍状肢长度身体质量
#>                                              
#>1阿德利火把…39.118.7181 3750
#>2阿德利火把…39.517.41863800
#>3阿德利火把…40.318195 3250
#>4阿德利·托格
testing2 %>% group_by(across(-county))
testing2 %>% ungroup() %>% group_by(across(-county))