У меня есть следующий объект RLE:RLE(): Возвращает среднее значение длины, только если значения == TRUE
Run Length Encoding
lengths: int [1:189] 4 5 3 15 6 4 9 1 9 5 ...
values : logi [1:189] FALSE TRUE FALSE TRUE FALSE TRUE ...
Я хотел бы найти среднее (среднее) длин, если соответствующий пункт в значения == TRUE (я не заинтересован в отрезках, когда значения == FALSE)
df <- data.frame(values = NoOfTradesAndLength$values, lengths = NoOfTradesAndLength$lengths)
AveLength <- aggregate(lengths ~ values, data = df, FUN = function(x) mean(x))
Который возвращает это:
values lengths
1 FALSE 7.694737
2 TRUE 5.287234
я могу не w получить длину, где значения == ИСТИНА, но есть ли более хороший способ сделать это? Или, может быть, я мог бы достичь аналогичного результата без использования rle? Он чувствует себя немного странно, переходя из списков в dataframe, и я уверен, что есть одна линия умного способа сделать это. Я видел, что производные этого вопроса проносились до этого, но я не мог придумать что-либо лучше от них, поэтому ваша помощь очень ценится.
Это фантастика! Гораздо красивее, чем у меня! – Freddie
В интересах кого-либо еще, читающего это, вы можете получить среднее из длин, равное значениям = FALSE, добавив! оператор до значений, например: с (NoOfTradesAndLength, mean (lengths [! values])) – Freddie
@FreddiE Да, это он – akrun