当前位置: 首页 > 知识库问答 >
问题:

结合case_when和mutate的条件语句

仇迪
2023-03-14

我想创建一个双变量映射,绘制两个变量:productionpossession。为了给部分数据提供正确的颜色,我想为一个变量添加一列颜色代码“a”、“B”、“C”和另一个变量1、2、3。然后再将两者连接起来。这样就可以像下面的示例那样对数据进行编码:

下面是我的示例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"))

有了这些结果...:

# 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的结合,希望有人能帮助我。

共有1个答案

澹台锐
2023-03-14

也许是这样的:

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的最新版本中,您也不需要.$

 类似资料: