使用dplyr mutate查找值在组中的首次出现

拉斯姆斯·拉森(Rasmus Larsen)

如何使用在组中查找某个值的首次出现dplyr

以下代码给出了预期的结果,但是我想知道是否有更短的方法来做到这一点。

另外,我担心group_byormutate或其他函数可能会对行进行隐式重排,不知道这是否会成为问题?

mtcars   %>% select( cyl, carb) %>% group_by( cyl ) %>%

   mutate( "occurence_of_4" =  carb == 4 )  %>%

   dplyr::arrange( cyl )  %>%

   group_by( cyl, occurence_of_4)  %>%

   mutate( "count" = 1:n(),
           "first_4_in_cyl_group"  = ifelse( occurence_of_4==TRUE & count==1, TRUE, FALSE)) 

变量first_4_in_cyl_groupTRUE用于每个汽缸组中首次出现的“ 4”,FALSE否则:

Source: local data frame [32 x 5]
Groups: cyl, occurence_of_4

   cyl carb occurence_of_4 count first_4_in_cyl_group
1    4    1          FALSE     1                FALSE
2    4    2          FALSE     2                FALSE
3    4    2          FALSE     3                FALSE
4    4    1          FALSE     4                FALSE
5    4    2          FALSE     5                FALSE
6    4    1          FALSE     6                FALSE
7    4    1          FALSE     7                FALSE
8    4    1          FALSE     8                FALSE
9    4    2          FALSE     9                FALSE
10   4    2          FALSE    10                FALSE
11   4    2          FALSE    11                FALSE
12   6    4           TRUE     1                 TRUE
13   6    4           TRUE     2                FALSE
14   6    1          FALSE     1                FALSE
15   6    1          FALSE     2                FALSE
16   6    4           TRUE     3                FALSE
17   6    4           TRUE     4                FALSE
18   6    6          FALSE     3                FALSE
19   8    2          FALSE     1                FALSE
20   8    4           TRUE     1                 TRUE
21   8    3          FALSE     2                FALSE
22   8    3          FALSE     3                FALSE
23   8    3          FALSE     4                FALSE
24   8    4           TRUE     2                FALSE
25   8    4           TRUE     3                FALSE
26   8    4           TRUE     4                FALSE
27   8    2          FALSE     5                FALSE
28   8    2          FALSE     6                FALSE
29   8    4           TRUE     5                FALSE
30   8    2          FALSE     7                FALSE
31   8    4           TRUE     6                FALSE
32   8    8          FALSE     8                FALSE
阿克伦

进行了一些修改:

  1. mutate通过在控制台中创建“ occurence_of_4”变量来删除第一步group_by
  2. ifelse 不需要,因为输出将为“ TRUE / FALSE”

    library(dplyr)
    mtcars %>%
         select(cyl, carb) %>%
         group_by(cyl, occurence_of_4= carb==4) %>% 
         arrange(cyl) %>%
         mutate(count= row_number(), 
             first_4_in_cyl_group = occurence_of_4 & count==1)
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

dplyr会覆盖组中除值的首次出现以外的所有值

来自分类Dev

按组查找插值,也许使用dplyr

来自分类Dev

使用dplyr突变指定组的值的问题

来自分类Dev

在dplyr :: mutate中使用条件

来自分类Dev

使用dplyr获取列的值

来自分类Dev

使用dplyr返回匹配的值

来自分类Dev

查找一组组中的首次出现

来自分类Dev

使用运行时成本O(log(n))查找数组中首次出现偶数的索引

来自分类Dev

使用 RE 从句子中查找字母、单词或空格的首次出现

来自分类Dev

使用mutate和dplyr创建具有替换值的列

来自分类Dev

在dplyr :: mutate中应用自定义函数时出现意外值

来自分类Dev

R:在dplyr :: mutate()中使用min()

来自分类Dev

使用dplyr :: mutate计算“平均销售份额”

来自分类Dev

无法使用dplyr mutate添加列

来自分类Dev

使用基于 str_detect 的 dplyr 的 mutate

来自分类Dev

在 dplyr 的 mutate 中使用散列键值对

来自分类Dev

如何使用dplyr mutate引用ifelse中的其他列

来自分类Dev

dplyr在mutate中每组广播单个值

来自分类Dev

Rcpp中的dplyr:使用dplyr在Rcpp中进行左连接

来自分类Dev

如何使用dplyr汇总与组不匹配的值

来自分类Dev

选择包含特定值的行的组(使用dplyr和管道)

来自分类Dev

使用Dplyr查找组的最大值并将其更改为同一表中另一列的结果

来自分类Dev

如何使用dplyr :: filter()删除观察组

来自分类Dev

使用dplyr按多个组进行汇总

来自分类Dev

使用dplyr将组汇总为间隔

来自分类Dev

使用dplyr按组获取累计计数

来自分类Dev

dplyr使用累积方法按组汇总

来自分类Dev

使用dplyr按组计算每个块?

来自分类Dev

使用dplyr按多个组进行汇总

Related 相关文章

热门标签

归档