можно создать переменный фактор для децилей моих данных, используя приведенную ниже код, который учитывает всю историю:R: Создание переменного фактора на основе общих децилей прокатки, как набор данные растет
`q <- quantile(x, seq(0,1,0.1), na.rm = TRUE)
decilab <- c("1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th")
q.factor <- cut(x, unique(q), included.lowest = TRUE, labels = decilab)`
Однако , Мне нужно сделать общий разрез в децили на скользящей основе, только учет истории, которая до маркировки. В приведенном ниже коде используется цикл for
для вычисления перетаскивания quantile
в виде 9 различных переменных, но я не уверен, как перевести это в одну факторную переменную (и я не хочу, чтобы эти переменные существовали).
`for(i in 1:length(x)){
D1[i] <- quantile(x[1:i],0.1, na.rm = TRUE)
D2[i] <- quantile(x[1:i],0.2, na.rm = TRUE)
D3[i] <- quantile(x[1:i],0.3, na.rm = TRUE)
D4[i] <- quantile(x[1:i],0.4, na.rm = TRUE)
D5[i] <- quantile(x[1:i],0.5, na.rm = TRUE)
D6[i] <- quantile(x[1:i],0.6, na.rm = TRUE)
D7[i] <- quantile(x[1:i],0.7, na.rm = TRUE)
D8[i] <- quantile(x[1:i],0.8, na.rm = TRUE)
D9[i] <- quantile(x[1:i],0.9, na.rm = TRUE)
}`
Должен быть лучший способ! Спасибо за вашу помощь и мои извинения, если это общая проблема - я пока ничего не нашел.
Редактировать: Извините, поскольку я новичок в переполнении стека и R. Я думаю, что у меня есть лучший пример, но я не уверен, как повторно отправить этот вопрос.
Предположим, у вас есть вектор x <- 1:1000
цель состоит в том, чтобы сократить эти данные в децилях с cut(x, seq(0,1,0.1), include.lowest = TRUE)
однако это было бы сократить целый ряд x
в группы, которые Bucket [0,100), [100, 200)...etc
однако, моя цель состоит в том, что bucketing является переменной величиной, на основе только предшествующее данные, а не весь вектор. По существу, каждая точка будет находиться в «верхнем дециле», потому что эта серия линейна, однако для стохастической серии дециль последней точки определяется только относительно точек продолжения, а не всей серии.
Я попытался следующие:
`for (i in 1:length(x)){
z[i] <- as.numeric(cut(x[1:i], quantile(x[1:i], seq(0,1,.1))))[i]
} `
Однако это не работает
Задавая вопрос на переполнение стека о коде, пожалуйста, обеспечить минимальный, полный, Верифицируемые пример, включая данные. В описании тега 'r' он специально запрашивает, чтобы вы делили необходимые данные с помощью' dput() '. http://stackoverflow.com/help/mcve –
Как написано, это не имеет никакого смысла для меня. Quantiles для непрерывных значений, factora - для дискретных значений. Я предлагаю вам попробовать создать пример с небольшим набором данных любой переменной, которую можно представить, а затем продемонстрировать, что вы ожидаете от нее, используя термины. –
Цель состоит в том, чтобы «decile», назначенный x [n], был основан на диапазоне данных в x [1: n] и исключал данные в диапазоне от x [(n + 1): inf ] – rroche