我正在使用 cut
函数使用最大/最小范围将我的数据分成组。这是我正在使用的代码示例:
# 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)
我想使用确定的因子分组来拆分另一个数据框,但我不确定如何使用因子来处理这个问题。我觉得我的代码结构应该大致如下:
# 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)}
我看到因子数据的结构如下,但我不知道如何正确使用它:
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]
我一直在试验的两个函数(但不起作用)如下:
# get group code
nearestCode <- function( number, groups ){
return( which( abs( groups-number )== min( abs(groups-number) ) ) )
}
nearestCode(7, testdf$group[0])
并尝试使用
which
函数。which(7, testdf$group[0])
识别分组并将它们应用于另一个数据帧的最佳方法是什么?
最佳答案
我会用:
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)
然后你可以使用:
findInterval(newdat$newvar, grpbrks) # to group new data
然后您就无需费力地从标签或数据中恢复中断。
想想,我想你也可以使用:
cut(newdat$newvar, grpbrks) # more isomorphic to original categorization I suppose
关于r - 如何确定值属于哪个因子组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6998660/