如何识别值属于哪个因子组?

djq*_*djq 4 statistics r

我正在使用该cut功能使用max/min范围将数据拆分成组.这是我正在使用的代码示例:

# sample data frame - used to identify intial groups
testdf <- data.frame(a = c(1:100), b = rnorm(100))

# split into groups based on ranges 
k <- 20 # number of groups
# split into groups, keep code
testdf$groupCode <- cut(testdf$b, breaks = k, labels = FALSE)
# store factor information 
testdf$group <- cut(testdf$b, breaks = k)                     
head(testdf)
Run Code Online (Sandbox Code Playgroud)

我想使用已识别的因子分组来分割另一个数据帧,但我不确定如何使用因子来处理这个问题.我认为我的代码结构大致如下:

# this is the data I want to categorize based on previous groupings
datadf <- data.frame(a = c(1:100), b = rnorm(100))
datadf$groupCode <- function(x){return(groupCode)}
Run Code Online (Sandbox Code Playgroud)

我看到因子数据结构如下,但我不知道如何正确使用它:

testdf$group[0]
factor(0)
20 Levels: (-2.15,-1.91] (-1.91,-1.67] (-1.67,-1.44] (-1.44,-1.2]  ... (2.34,2.58]
Run Code Online (Sandbox Code Playgroud)

我一直在试验的两个函数(但不起作用)如下:

# get group code 
nearestCode <- function( number, groups ){
  return( which( abs( groups-number )== min( abs(groups-number) ) ) )  
}
nearestCode(7, testdf$group[0])
Run Code Online (Sandbox Code Playgroud)

并且还试验了这个which功能.

which(7, testdf$group[0])
Run Code Online (Sandbox Code Playgroud)

识别分组并将其应用于其他数据帧的最佳方法是什么?

42-*_*42- 7

我会用过:

testdf$groupCode <- cut(testdf$b, breaks = 
                           quantile(testdf$b, seq(0,1, by=0.05), na.rm=TRUE))
grpbrks <- quantile(testdf$b, seq(0,1, by=0.05), na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

 findInterval(newdat$newvar, grpbrks)   # to group new data
Run Code Online (Sandbox Code Playgroud)

然后你就不需要从标签或数据中恢复中断了.

考虑一下,我想你也可以使用:

 cut(newdat$newvar, grpbrks)  # more isomorphic to original categorization I suppose
Run Code Online (Sandbox Code Playgroud)