结合 case_when 和 mutate 的条件语句
Conditional statement combining case_when and mutate
我想创建一个绘制两个变量的双变量地图:production
和 possession
。为了给部分数据提供正确的颜色,我想为一个变量和另一个 1, 2, 3
添加一个颜色代码为 "A", "B", "C"
的列。然后将两者联系起来。只是为了让数据像下面的例子一样编码:
这是我的示例 df 和失败代码:
library(dplyr)
example_df <- structure(list(production = c(0.74, 1.34, 2.5), possession = c(5,
23.8, 124.89)), .Names = c("production", "possession"), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame"))
example_df %>%
mutate(colour_class_nr = case_when(.$production %in% 0.068:0.608 ~ "1",
.$production %in% 0.609:1.502 ~ "2",
.$production %in% 1.503:3.061 ~ "3",
TRUE ~ "none"),
colour_class_letter = case_when(.$possession %in% 0.276:9.6 ~ "A",
.$possession %in% 9.7:52 ~ "B",
.$possession %in% 52.1:155.3 ~ "C",
TRUE ~ "none"))
有了这些结果...:[=20=]
# A tibble: 3 x 4
production possession colour_class_nr colour_class_letter
<dbl> <dbl> <chr> <chr>
1 0.740 5.00 4 none
2 1.34 23.8 4 none
3 2.50 125 4 none
但这是所需的输出:
# A tibble: 3 x 4
production possession colour_class_nr colour_class_letter
<dbl> <dbl> <dbl> <chr>
1 0.740 5.00 2 A
2 1.34 23.8 2 B
3 2.50 125 3 C
我是 case_when()
与 mutate 结合的新手,希望有人能提供帮助。
也许是这样:
example_df %>%
mutate(colour_class_nr = case_when(production < 0.608 ~ "1",
production > 0.609 & production < 1.502 ~ "2",
production > 1.503 ~ "3",
TRUE ~ "none"),
colour_class_letter = case_when(possession < 9.6 ~ "A",
possession > 9.6 & possession < 52 ~ "B",
possession > 52 ~ "C",
TRUE ~ "none"))
结果:
# A tibble: 3 x 4
production possession colour_class_nr colour_class_letter
<dbl> <dbl> <chr> <chr>
1 0.740 5.00 2 A
2 1.34 23.8 2 B
3 2.50 125 3 C
唯一的区别是 >
和 <
的使用,尽管某些条件在您的示例中没有多大意义。您也不需要最新版本的 dplyr 中的 .$
。
我想创建一个绘制两个变量的双变量地图:production
和 possession
。为了给部分数据提供正确的颜色,我想为一个变量和另一个 1, 2, 3
添加一个颜色代码为 "A", "B", "C"
的列。然后将两者联系起来。只是为了让数据像下面的例子一样编码:
这是我的示例 df 和失败代码:
library(dplyr)
example_df <- structure(list(production = c(0.74, 1.34, 2.5), possession = c(5,
23.8, 124.89)), .Names = c("production", "possession"), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame"))
example_df %>%
mutate(colour_class_nr = case_when(.$production %in% 0.068:0.608 ~ "1",
.$production %in% 0.609:1.502 ~ "2",
.$production %in% 1.503:3.061 ~ "3",
TRUE ~ "none"),
colour_class_letter = case_when(.$possession %in% 0.276:9.6 ~ "A",
.$possession %in% 9.7:52 ~ "B",
.$possession %in% 52.1:155.3 ~ "C",
TRUE ~ "none"))
有了这些结果...:[=20=]
# A tibble: 3 x 4
production possession colour_class_nr colour_class_letter
<dbl> <dbl> <chr> <chr>
1 0.740 5.00 4 none
2 1.34 23.8 4 none
3 2.50 125 4 none
但这是所需的输出:
# A tibble: 3 x 4
production possession colour_class_nr colour_class_letter
<dbl> <dbl> <dbl> <chr>
1 0.740 5.00 2 A
2 1.34 23.8 2 B
3 2.50 125 3 C
我是 case_when()
与 mutate 结合的新手,希望有人能提供帮助。
也许是这样:
example_df %>%
mutate(colour_class_nr = case_when(production < 0.608 ~ "1",
production > 0.609 & production < 1.502 ~ "2",
production > 1.503 ~ "3",
TRUE ~ "none"),
colour_class_letter = case_when(possession < 9.6 ~ "A",
possession > 9.6 & possession < 52 ~ "B",
possession > 52 ~ "C",
TRUE ~ "none"))
结果:
# A tibble: 3 x 4
production possession colour_class_nr colour_class_letter
<dbl> <dbl> <chr> <chr>
1 0.740 5.00 2 A
2 1.34 23.8 2 B
3 2.50 125 3 C
唯一的区别是 >
和 <
的使用,尽管某些条件在您的示例中没有多大意义。您也不需要最新版本的 dplyr 中的 .$
。