在case_when()的LHS中使用值的位置出现

斯蒂恩·哈斯特德

我可以在左侧(LHS)中使用值的位置出现dplyr::case_when()吗?

在这个例子中的数据,我想创建y这样它仅包含最后一次出现"A"x与第一次出现"B"x

库和数据:

library(dplyr)

# Data
df <- tibble(
  x = c(NA, "A", "A", NA, NA, "B", "B"))
df
#> # A tibble: 7 x 1
#>   x    
#>   <chr>
#> 1 <NA> 
#> 2 A    
#> 3 A    
#> 4 <NA> 
#> 5 <NA> 
#> 6 B    
#> 7 B

所需结果

tibble(
  x = c(NA, "A", "A", NA, NA, "B", "B"),
  y = c(NA, NA, "A", NA, NA, "B", NA))
#> # A tibble: 7 x 2
#>   x     y    
#>   <chr> <chr>
#> 1 <NA>  <NA> 
#> 2 A     <NA> 
#> 3 A     A    
#> 4 <NA>  <NA> 
#> 5 <NA>  <NA> 
#> 6 B     B    
#> 7 B     <NA>

我失败的尝试之一

df %>% 
  mutate(
    y = case_when(
      x == last(x == "A")  ~ "A",
      x == first(x == "B") ~ "B")
  )
#> # A tibble: 7 x 2
#>   x     y    
#>   <chr> <chr>
#> 1 <NA>  <NA> 
#> 2 A     <NA> 
#> 3 A     <NA> 
#> 4 <NA>  <NA> 
#> 5 <NA>  <NA> 
#> 6 B     <NA> 
#> 7 B     <NA>

reprex软件包(v0.3.0)创建于2019-11-28

阿克伦

我们需要这个位置

library(dplyr)
df %>%
    mutate(y = replace(x, first(which(x  %in% "A")), NA),
           y = replace(y, last(which(x %in% "B")), NA))
# A tibble: 7 x 2
#  x     y    
#  <chr> <chr>
#1 <NA>  <NA> 
#2 A     <NA> 
#3 A     A    
#4 <NA>  <NA> 
#5 <NA>  <NA> 
#6 B     B    
#7 B     <NA> 

或用于match获取索引

df %>% 
   mutate(y = replace(x, c(match("A",  x), n() +1 - match("B", rev(x))), NA))

或使用 case_when

df %>% 
  mutate(y = case_when((duplicated(x == "A", fromLast = TRUE) & 
           x %in% "A") |(duplicated(x == "B") & x %in% "B") ~ NA_character_,
          TRUE ~ x))

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 dplyr::case_when 中使用 NSE

来自分类Dev

如何使用 cbind 简洁地回收 case_when LHS 变量进行子集/索引?

来自分类Dev

在dplyr中使用case_when时遇到问题

来自分类Dev

在Dplyr中使用case_when难以创建新列

来自分类Dev

如何在 dplyr mutate() 函数中使用 case_when ?

来自分类Dev

在R中使用mutate,case_when,any()和all()函数使用Group by

来自分类Dev

在case_when中使用map2替换字符串

来自分类Dev

如何在case_when中使用字符串检测?

来自分类Dev

在对应阈值表中使用case_when和之间

来自分类Dev

在分组的行中使用case_when()并选择何时显示项目-tidyverse / R解决方案

来自分类Dev

在 R 中的 dplyr 中使用带有 mutate 和 case_when 的 shift:未按预期工作

来自分类Dev

循环使用mutate和case_when

来自分类Dev

在case_when中如何使用tidydots?

来自分类Dev

如何在首次使用唯一值时使用case_when创建新变量

来自分类Dev

如何在首次使用唯一值时使用case_when创建新变量

来自分类Dev

使用group_by和case_when为每个组产生单个值

来自分类Dev

使用mutate_at和case_when将变量名称分配为值

来自分类Dev

使用 mutate 和 case_when 时从现有列插入值

来自分类Dev

如果不是case_when语句,则保留值

来自分类Dev

Tidyverse:case_when()未返回正确值

来自分类Dev

如何从case_when()返回多个值或小标题?

来自分类Dev

R如何使用case_when()确定列中的先前值是否大于有序向量中的后续值

来自分类Dev

在dplyr :: mutate()上下文中在dplyr :: case_when()中使用复杂的RHS表达式

来自分类Dev

在mutate_at()中使用case_when()用NA重新编码具有不同类型的所选列的行

来自分类Dev

一种通过使用查找表而不是case_when替换R中100个唯一值的方法?

来自分类Dev

在小标题中添加新列,并在RHS中将case_when()与多种替换值一起使用

来自分类Dev

用户定义的函数使用mutate和case_when

来自分类Dev

在ir dplyr与OR一起使用case_when

来自分类Dev

使用case_when按日期范围对变量进行分类?

Related 相关文章

  1. 1

    在 dplyr::case_when 中使用 NSE

  2. 2

    如何使用 cbind 简洁地回收 case_when LHS 变量进行子集/索引?

  3. 3

    在dplyr中使用case_when时遇到问题

  4. 4

    在Dplyr中使用case_when难以创建新列

  5. 5

    如何在 dplyr mutate() 函数中使用 case_when ?

  6. 6

    在R中使用mutate,case_when,any()和all()函数使用Group by

  7. 7

    在case_when中使用map2替换字符串

  8. 8

    如何在case_when中使用字符串检测?

  9. 9

    在对应阈值表中使用case_when和之间

  10. 10

    在分组的行中使用case_when()并选择何时显示项目-tidyverse / R解决方案

  11. 11

    在 R 中的 dplyr 中使用带有 mutate 和 case_when 的 shift:未按预期工作

  12. 12

    循环使用mutate和case_when

  13. 13

    在case_when中如何使用tidydots?

  14. 14

    如何在首次使用唯一值时使用case_when创建新变量

  15. 15

    如何在首次使用唯一值时使用case_when创建新变量

  16. 16

    使用group_by和case_when为每个组产生单个值

  17. 17

    使用mutate_at和case_when将变量名称分配为值

  18. 18

    使用 mutate 和 case_when 时从现有列插入值

  19. 19

    如果不是case_when语句,则保留值

  20. 20

    Tidyverse:case_when()未返回正确值

  21. 21

    如何从case_when()返回多个值或小标题?

  22. 22

    R如何使用case_when()确定列中的先前值是否大于有序向量中的后续值

  23. 23

    在dplyr :: mutate()上下文中在dplyr :: case_when()中使用复杂的RHS表达式

  24. 24

    在mutate_at()中使用case_when()用NA重新编码具有不同类型的所选列的行

  25. 25

    一种通过使用查找表而不是case_when替换R中100个唯一值的方法?

  26. 26

    在小标题中添加新列,并在RHS中将case_when()与多种替换值一起使用

  27. 27

    用户定义的函数使用mutate和case_when

  28. 28

    在ir dplyr与OR一起使用case_when

  29. 29

    使用case_when按日期范围对变量进行分类?

热门标签

归档