R将数据与因子和水平分组

时间:2011-12-11 11:22:05

标签: r grouping r-factor

我正在尝试创建一个频率表,将值分组到有限数量的容器中。

说我有数据

X <- c(1,2,3,4,3,9, 20)

我可以创建一个频率表,使其显示所有空单元格:

(factor(X, levels = c(0:max(X))))

我想要显示值>5,而不是显示每个可能值的频率,以便表格中的级别为:0, 1, 2, 3, 4, 5, and >5

我该怎么做?

2 个答案:

答案 0 :(得分:3)

首先需要转换向量以使其具有唯一条目,然后您可以在factor()函数中添加缺少的级别:

X <- c(1,2,3,4,3,9,20)
X <- ifelse(X>5,">5",X)
X <- factor(X,levels=c(0:5,">5"))

这导致:

  

X       [1] 1 2 3 4 3> 5> 5       级别:0 1 2 3 4 5> 5

答案 1 :(得分:1)

Sacha已经给你一个有效的答案,但为了将来参考,你可能想要熟悉cut函数,它旨在将连续变量分解为块。

x <- cut(x, c(-Inf, 0:5, Inf), labels=c(0:5, ">5"))