繁体   English   中英

从数据框中提取(或隔离)“分组常量”列,*使用 dplyr/tidyverse*

[英]Extract (or isolate) 'group-wise constant' columns from a data frame, *using dplyr/tidyverse*

如何使用 dplyr/tidyverse从数据框中提取(或隔离_分组常量列?

这是道尔/哈德利在此处提出的数十年历史问题的更新。 早期海报的例子......

使用来自 iris 的人为示例(生成一个数据集,该数据集的列在此示例中按组保持不变)

irisX <- iris %>% mutate(
    numspec = as.numeric(Species),
    numspec2 = numspec*2
)

现在我想生成一个数据集,只保留Speciesnumspecnumspec2列(并且每个只保留一行)。

而且我不想告诉它这些是哪些列(按组不变)——我希望它为我找到这些。

所以我想要的是

Species, numspec, numspec2
setosa, 1, 2
versicolor, 2, 4
virginica, 3, 6

与旧的链接问题不同,我想使用 tidyverse 做一些事情,这样我就可以更好地理解它并且代码看起来更清晰。

我试过类似的东西

single_iris <- irisX %>% 
group_by(Species) %>% 
select_if(function(.) n_distinct(.) == 1)

但后者select_if忽略分组。

如果我们想使用select ,请在分组之外进行

library(dplyr)
irisX %>%
     select(where(~ n_distinct(.) == n_distinct(irisX$Species))) %>%     
     distinct() 

你可以这样做:

iris %>% 
  group_by(Species)%>%
  summarise(numspec = as.numeric(first(Species)),
            numspec2 = numspec*2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM