繁体   English   中英

使用data.table和cut将变量拆分为具有相等观察值的组

[英]Using data.table and cut to split a variable into groups with equal observations

我有一个非常简单的问题。 对于更复杂的相关问题的答案,我一直无法弄清楚正确的语法。

我有一个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
)

我在语法上苦苦挣扎。

最简单的方法是什么?

我们可以指定cut的breaks中的breaks个数

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM