R как генерировать классы размера из данных о размере - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь создать вектор классов размеров для собранных мной данных о размере кораллов. Что я хочу сделать, это создать новый столбец, который представляет класс размера для каждого отдельного измерения.

Я хочу, чтобы классы размеров основывались на каждых 10 единицах измерения. Например, если размер коралла 1-10, я хочу, чтобы он был классом размера 1, если 11-20, я хочу, чтобы он был классом размера 2, если 21-30, я хочу, чтобы это был класс размера 3 и т.д. c ,

Любая помощь в выполнении sh этой, казалось бы, простой задачи, будет принята с благодарностью. Спасибо!

База данных

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"))

1 Ответ

1 голос
/ 28 марта 2020

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...