我想创建一个双变量映射,绘制两个变量:production
和possession
。为了给部分数据提供正确的颜色,我想为一个变量添加一列颜色代码“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的结合,希望有人能帮助我。
也许是这样的:
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的最新版本中,您也不需要.$
。
在dplyr工作流中,当newvar==0时,我尝试在dataframe的每一列中的newvar列后粘贴一个0,否则不做任何操作。我修改了iris数据集: null
null null
我有人口统计数据集,其中包括一个家庭中的人的年龄。这是通过一项调查收集的,参与者可以拒绝提供他们的年龄。 结果是一个数据集,每行有一个家庭(每行有一个家庭ID代码),列中有各种家庭特征,如年龄。拒绝的响应编码为“R”,您可以使用下面的代码重新创建示例: 编辑:已解决!
我目前在R中有一个数据框,看起来像这样 我用group_by将数据按动物分组。我想创建一个新的列V6,它采用列V4,将较低的值除以较高的值,如果该值小于0.5,则V6= A,ifelse则V6 = b..有没有办法在R中使用带条件语句的mutate函数?实际的数据框要大得多,所以我宁愿不用手动操作。这是我希望最终数据框的样子 这就是我开始做的 但我知道这是不对的。非常感谢。
我正在寻找一种动态的方法来指定一些“条件参数”,然后在操作时将其输入到一个
1、打印九九乘法表 # -*- coding: UTF-8 -*- # 打印九九乘法表 for i in range(1, 10): for j in range(1, i+1): # 打印语句中,大括号及其里面的字符 (称作格式化字段) 将会被 .format() 中的参数替换,注意有个点的 print('{}x{}={}\t'.