将连续变量分成等大小的组

71

我需要将一个连续变量分成三个等大小的组。

数据框示例:

das <- data.frame(anim = 1:15,
                  wt = c(181,179,180.5,201,201.5,245,246.4,
                         189.3,301,354,369,205,199,394,231.3))

按照wt的值进行分割后,我需要在新变量wt2下有这样的3个类:

> das 
   anim    wt wt2
1     1 181.0   1
2     2 179.0   1
3     3 180.5   1
4     4 201.0   2
5     5 201.5   2
6     6 245.0   2
7     7 246.4   3
8     8 189.3   1
9     9 301.0   3
10   10 354.0   3
11   11 369.0   3
12   12 205.0   2
13   13 199.0   1
14   14 394.0   3
15   15 231.3   2

这将应用于大数据集。


4
见例:https://dev59.com/z2025IYBdhLWcg3wl3Em,https://dev59.com/5XE85IYBdhLWcg3wtV1T,https://dev59.com/0G035IYBdhLWcg3wMM8G,https://dev59.com/0VTTa4cB1Zd3GeqPvs25,https://dev59.com/S1bTa4cB1Zd3GeqP-Wie,http://stackoverflow.com/questions/3288361/create-size-categories-without-nested-ifelse-in-r,...。需要翻译的内容是一些关于使用R进行数据分组和离散化的问题。这些问题涉及到将一组值划分为若干个等长的区间,或者根据值的范围将其分成不同的类别,并将结果用于进一步的分析和可视化。这些问题的解决方案通常涉及R中的函数和库,例如cut、cut2和ggplot2等。 - Joris Meys
1
你确定 @Ben Bolker 的回答不是正确的吗?你指定你想要相等大小的组。 - pir
11个回答

0

有趣的是,如果你想把变量“wt”分成三个相等的子部分(即179-181、181-183等),你可以这样做:

x<-table(as.matrix(cut(das$wt,breaks = ((max(das$wt)-min(das$wt))/3)),as.numeric(cut(das$wt,breaks = ((max(das$wt)-min(das$wt))/3)))))

根据数据集"das"给出结果:

x
(179,182] (188,191] (197,200] (200,203] (203,206] (230,234] (243,246] 
    3         1         1         2         1         1         1 
(246,249] (300,303] (352,355] (367,370] (391,394] 
    1         1         1         1         1 

(代码中的数字3是一个任意的项目,可以根据您的兴趣进行更改。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接