首页 > 解决方案 > R如何从尺寸数据生成尺寸类

问题描述

我正在尝试为我收集的珊瑚大小数据生成一个大小类向量。我想要做的是创建一个代表每个单独测量的尺寸等级的新列。

我希望尺寸等级基于每 10 个测量单位。例如,如果珊瑚的大小为 1-10,我希望它是大小等级 1,如果是 11-20,我希望它是大小等级 2,如果是 21-30,我希望它是大小等级 3,等等。

任何帮助完成这个看似简单的任务将不胜感激。谢谢!

数据库

structure(list(Coral = c(1, 2, 3, 4, 5, 6), Size = c(6, 10, 12, 
40, 14, 22)), class = c("spec_tbl_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L), spec = structure(list(cols = list(
    Coral = structure(list(), class = c("collector_double", "collector"
    )), Size = structure(list(), class = c("collector_double", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
"collector")), skip = 1), class = "col_spec"))

期望的输出

structure(list(Coral = c(1, 2, 3, 4, 5, 6), Size = c(6, 10, 12, 
40, 14, 22), `Size Class` = c(1, 1, 2, 4, 2, 3)), class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -6L), spec = structure(list(
    cols = list(Coral = structure(list(), class = c("collector_double", 
    "collector")), Size = structure(list(), class = c("collector_double", 
    "collector")), `Size Class` = structure(list(), class = c("collector_double", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
    "collector")), skip = 1), class = "col_spec"))

标签: r

解决方案


你可以使用ceiling

df$Size_class <- ceiling(df$Size/10)

#  Coral  Size Size_class
#  <dbl> <dbl>      <int>
#1     1     6          1
#2     2    10          1
#3     3    12          2
#4     4    40          4
#5     5    14          2
#6     6    22          3

或者findInterval

df$Size_class <- findInterval(df$Size, seq(0, max(df$Size), 10), left.open = TRUE)

推荐阅读