组合因子水平
Combine factor levels
我正在编写一个函数,它将我的数据划分为集群。每个集群都应该是一个因素水平。如何将相邻的因子水平合并为一个?最后,我想要因子标签,显示集群中的最低和最高数字。例如,如果我有数据:
data <- c(1,2,1,1,2,4,2,3,3,2,4,3,2)
data2 <- as.factor(data)
所以这将构成一个具有 4 个级别的因子。比方说,我想结合第 2 级和第 3 级。我唯一能想到的就是使用 cut() 函数:
data2 <- cut(data, breaks=c(0,1,3,4))
这给了我一个水平为“(0,1]”“(1,3]”“(3,4]”)的因素。现在我想结合“(1,3]”和“(3,4]”到级别“(1,4]”)。我该怎么做?是否可以只使用 data2 来做到这一点?我知道我可以通过对数据使用 cut() 来做到这一点,但是当我有很多数据时,集群可能会变得混乱。
随心所欲
levels(data2)[2:3] <- '(1,4]'
data2
#[1] (0,1] (1,4] (0,1] (0,1] (1,4] (1,4] (1,4] (1,4] (1,4] (1,4] (1,4] (1,4]
#[13] (1,4]
#Levels: (0,1] (1,4]
我正在编写一个函数,它将我的数据划分为集群。每个集群都应该是一个因素水平。如何将相邻的因子水平合并为一个?最后,我想要因子标签,显示集群中的最低和最高数字。例如,如果我有数据:
data <- c(1,2,1,1,2,4,2,3,3,2,4,3,2)
data2 <- as.factor(data)
所以这将构成一个具有 4 个级别的因子。比方说,我想结合第 2 级和第 3 级。我唯一能想到的就是使用 cut() 函数:
data2 <- cut(data, breaks=c(0,1,3,4))
这给了我一个水平为“(0,1]”“(1,3]”“(3,4]”)的因素。现在我想结合“(1,3]”和“(3,4]”到级别“(1,4]”)。我该怎么做?是否可以只使用 data2 来做到这一点?我知道我可以通过对数据使用 cut() 来做到这一点,但是当我有很多数据时,集群可能会变得混乱。
随心所欲
levels(data2)[2:3] <- '(1,4]'
data2
#[1] (0,1] (1,4] (0,1] (0,1] (1,4] (1,4] (1,4] (1,4] (1,4] (1,4] (1,4] (1,4]
#[13] (1,4]
#Levels: (0,1] (1,4]