Я создал функцию в R, которая создает децили (или любую n-плитку) на основе показателя объема в отличие от количества наблюдений.
User_Decile <- function(x,n,Output = " "){
require(dplyr)
df <- data_frame(index = seq_along(x),value = x)
x_sum <- sum(df$value)
x_ranges <- x_sum/n
df <- df %>% arrange(value)
df$cumsum <- cumsum(df$value)
df$bins <- cut(df$cumsum, breaks = floor(seq(0, x_sum, x_ranges)),
right = T,
include.lowest = T,
labels = as.integer(seq(1,n,1)))
if(Output == "Summary"){
df <- df %>% group_by(bins)
return(df %>% summarise(Lower_Bound = min(value),
Upper_Bound = max(value) - 1,
Value_sum = sum(value)))}
else {
df <- df %>% arrange(index)
return(as.numeric(df$bins))}
}
(x
- это вектор чисел, n
- это число бинов / текстилей, в которые группируются данные, Output=
указывает, требуется ли сводка границ / данных или самих фактических данных. )
Ранее он хорошо работал в программе, которую я создал для сегментирования некоторых данных, но я просто попытался использовать эту функцию снова впервые за пару месяцев и получаю:
Error in .bincode(x, breaks, right, included.lowest) :
invalid 'right' argument
В соответствии с ошибкой проблема связана с аргументом 'right' в функции cut (). Насколько я знаю, аргумент right=
является логическим и принимает только значения T или F. Я пробовал оба, но ни один, кажется, не работает.
Есть ли у кого-нибудь решение этой проблемы или может порекомендовать другую функцию вместо cut()
?