Использование data.table и cut для разделения переменной на группы с равными наблюдениями - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть очень простой вопрос.С ответами на более сложные вопросы я не смог понять правильный синтаксис.

У меня есть data.table, который выглядит следующим образом:

   dat <- read.table(
  text = "A   B   C   D   E   F   G   H   I   J
  A   0   1   1   1   0   1   0   1   1   1
  B   1   0   0   0   1   0   1   0   0   2
  C   0   0   0   1   1   0   0   0   0   3
  D   1   0   1   0   0   1   0   1   0   4
  E   0   1   0   1   0   1   1   0   1   5
  F   0   0   1   0   0   0   1   0   0   6
  G   0   1   0   1   0   0   0   0   0   7
  H   1   0   1   0   0   1   0   0   0   8
  I   0   1   0   1   1   0   1   0   0   9
  J   1   0   1   0   0   1   0   1   0   9",
  header = TRUE
)

Теперь я хотел быиспользовать data.table для создания переменной с именем Jcat, чтобы разделить переменную J на 3 категории с более или менее равным количеством наблюдений, просто:

   dat <- read.table(
  text = "A   B   C   D   E   F   G   H   I   J Jcat
  A   0   1   1   1   0   1   0   1   1   1   1
  B   1   0   0   0   1   0   1   0   0   2   1
  C   0   0   0   1   1   0   0   0   0   3   1
  D   1   0   1   0   0   1   0   1   0   4   2
  E   0   1   0   1   0   1   1   0   1   5   2
  F   0   0   1   0   0   0   1   0   0   6   2
  G   0   1   0   1   0   0   0   0   0   7   3
  H   1   0   1   0   0   1   0   0   0   8   3
  I   0   1   0   1   1   0   1   0   0   9   3
  J   1   0   1   0   0   1   0   1   0   9   3",
  header = TRUE
)

Я борюсь с синтаксисом.

Какой самый простой способ сделать это?

1 Ответ

0 голосов
/ 26 декабря 2018

Мы можем указать количество разрывов в breaks аргумент cut

library(data.table)
n <- 3
setDT(dat)[, Jcat := as.integer(cut(J, breaks = n))]
...