Как сделать срединные расщепления в пределах уровней факторов в R?
Здесь я делаю новый столбец, чтобы указать, является ли myData выше или ниже его медианы
### MedianSplits based on Whole Data
#create some test data
myDataFrame=data.frame(myData=runif(15),myFactor=rep(c("A","B","C"),5))
#create column showing median split
myBreaks= quantile(myDataFrame$myData,c(0,.5,1))
myDataFrame$MedianSplitWholeData = cut(
myDataFrame$myData,
breaks=myBreaks,
include.lowest=TRUE,
labels=c("Below","Above"))
#Check if it's correct
myDataFrame$AboveWholeMedian = myDataFrame$myData > median(myDataFrame$myData)
myDataFrame
Работает отлично. Теперь я хочу сделать то же самое, но вычислить медианные разбиения на каждом уровне myFactor.I '
мы придумали это:
#Median splits within factor levels
byOutput=by(myDataFrame$myData,myDataFrame$myFactor, function (x) {
myBreaks= quantile(x,c(0,.5,1))
MedianSplitByGroup=cut(x,
breaks=myBreaks,
include.lowest=TRUE,
labels=c("Below","Above"))
MedianSplitByGroup
})
byOutput содержит то, что я хочу. Он правильно классифицирует каждый элемент факторов A, B и C. Однако я'Я хотел бы создать новый столбец myDataFrame $ FactorLevelMedianSplit, который показывает только что вычисленное медианное разбиение.
Как вы конвертируете выводот" Команда в полезный столбец данных кадра?
Я думаю, что, возможно, "от" команда не R-как способ сделать это ...
Обновить:
С тьерриs пример того, как правильно использовать factor (), и обнаружив "пр» функция в Спекторкнига, яМы нашли это решение, которое не требует дополнительных пакетов.
myDataFrame$MediansByFactor=ave(
myDataFrame$myData,
myDataFrame$myFactor,
FUN=median)
myDataFrame$FactorLevelMedianSplit = factor(
myDataFrame$myData>myDataFrame$MediansByFactor,
levels = c(TRUE, FALSE),
labels = c("Above", "Below"))