Soweit ich weiß, ist case_when()
eine verallgemeinerte Version von ifelse()
.Wie kann ich case_when innerhalb dplyr mutate() -Funktion verwenden?
Allerdings verstehe ich nicht, wie Sie diese Funktion innerhalb dplyr::mutate()
Funktion verwenden. Es hat früher mit githubs letzter Version von dplyr funktioniert, aber seit ich wieder bei der CRAN Version (0.5) bin, funktioniert es nicht mehr. Hat jemand eine Ahnung?
Hier ist mein reproduzierbares Beispiel:
library(devtools)
library(tibble)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
tibble(
group = c("A", "A", "A", "B", "B", "B"),
x = 1:6
) %>%
mutate(
y = ifelse(group == "A", -x, x)
)
#> # A tibble: 6 × 3
#> group x y
#> <chr> <int> <int>
#> 1 A 1 -1
#> 2 A 2 -2
#> 3 A 3 -3
#> 4 B 4 4
#> 5 B 5 5
#> 6 B 6 6
tibble(
group = c("A", "A", "A", "B", "B", "B"),
x = 1:6
) %>%
mutate(
y = case_when(
group == "A" ~ -x,
TRUE ~ x
)
)
#> Error in mutate_impl(.data, dots): object 'group' not found
tibble(
group = c("A", "A", "A", "B", "B", "B"),
x = 1:6
) %>%
mutate_(
.dots = list(
"y" = lazyeval::interp(
~ case_when(var1 == "A" ~ -var2, TRUE, var2),
var1 = as.name(group),
var2 = as.name(x)
)
)
)
#> Error in as.name(group): object 'group' not found
devtools::session_info()
#> Session info -------------------------------------------------------------
#> setting value
#> version R version 3.3.2 (2016-10-31)
#> system x86_64, linux-gnu
#> ui X11
#> language (EN)
#> collate C
#> tz <NA>
#> date 2017-03-10
#> Packages -----------------------------------------------------------------
#> package * version date source
#> assertthat 0.1 2013-12-06 CRAN (R 3.2.2)
#> backports 1.0.5 2017-01-18 cran (@1.0.5)
#> DBI 0.6 2017-03-09 cran (@0.6)
#> devtools * 1.12.0.9000 2017-03-07 Github (hadley/[email protected]90)
#> digest 0.6.12 2017-01-27 cran (@0.6.12)
#> dplyr * 0.5.0 2016-06-24 CRAN (R 3.3.2)
#> evaluate 0.10 2016-10-11 cran (@0.10)
#> htmltools 0.3.5 2016-03-21 CRAN (R 3.2.3)
#> knitr 1.15.1 2016-11-22 cran (@1.15.1)
#> lazyeval 0.2.0.9000 2016-10-14 Github (hadley/[email protected])
#> magrittr 1.5 2014-11-22 CRAN (R 3.2.3)
#> memoise 1.0.0.9001 2017-02-13 Github (hadley/[email protected])
#> pkgbuild 0.0.0.9000 2017-03-07 Github (r-pkgs/[email protected])
#> pkgload 0.0.0.9000 2017-03-07 Github (r-pkgs/[email protected])
#> R6 2.2.0 2016-10-05 cran (@2.2.0)
#> Rcpp 0.12.9 2017-01-14 cran (@0.12.9)
#> rmarkdown 1.3.9004 2017-03-09 Github (rstudio/[email protected])
#> rprojroot 1.2 2017-01-16 cran (@1.2)
#> stringi 1.1.2 2016-10-01 CRAN (R 3.3.1)
#> stringr 1.2.0 2017-02-18 cran (@1.2.0)
#> tibble * 1.2 2016-08-26 CRAN (R 3.2.3)
#> withr 1.0.2 2016-06-20 CRAN (R 3.2.3)
#> yaml 2.1.14 2016-11-12 cran (@2.1.14)