У меня есть вопрос выбора блоков данных в зависимости от условия, которое я предоставляю. Его многоэтапный процесс, который, я думаю, должен выполняться в функции и может применяться к другим наборам данных на lapply
.Выбор datachunks в зависимости от условия
1) У меня есть data.frame, у которого есть 19 столбцов (но в данных примера здесь всего два). Я хочу сначала проверить строки первого столбца (время), они должны находиться в диапазоне 90 и 54000, если некоторые из них не в этом диапазоне пропустить их. После подсчета этих фрагментов, подсчитайте, сколько столбцов столбцов показывает полные положительные и отрицательные/позиционные значения. Если блок содержит отрицательное число, считайте его включенным. и дать что-то переключения скорости, как (общее число кусков, которые показывают коммутируемые состояние)/(общее количество кусков, которые варьируются между 90:54000
)
2) для фрагментов данных, которая удовлетворяет диапазон 90:54000
, проверить МАГ для первое наблюдение числа <0
вместе с соответствующим временем
`numbers <- c(seq(1,-1,length.out = 601),seq(1,0.98,length.out = 601))
time <- c(seq(90,54144,length.out = 601),seq(90,49850,length.out = 601))
data = data.frame(rep(time,times=12), mag=rep(numbers, times=6))
n <- 90:54000
dfchunk<- split(data, factor(sort(rank(row.names(data))%%n)))
ext_fsw<-lapply(dfchunk,function(x)x[which(x$Mag<0)[1],])
x.n <- data.frame(matrix(unlist(ext_fsw),nrow=n, byrow=T)`
здесь реальный набор данных выглядеть
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 1 90 0 0 0 0.0023 -0.0064 0.9987 0.0810 0.0375 0.9814 0.0829 0.0379 0.9803 0.0715 0.0270 0.9823 2 180 0 0 0 0.0023 -0.0064 0.9987 0.0887 -0.0281 0.9818 0.0956 -0.0288 0.9778 0.0796 -0.0469 0.9772 3 270 0 0 0 0.0023 -0.0064 0.9987 -0.0132 -0.0265 0.9776 0.0087 -0.0369 0.9797 0.0311 -0.0004 0.9827 4 360 0 0 0 0.0023 -0.0064 0.9987 0.0843 0.0369 0.9752 0.0765 0.0362 0.9749 0.0632 0.0486 0.9735 5 450 0 0 0 0.0023 -0.0064 0.9987 0.1075 -0.0660 0.9737 0.0914 -0.0748 0.9698 0.0586 -0.0361 0.9794 6 540 0 0 0 0.0023 -0.0064 0.9987 0.0006 0.0072 0.9808 -0.0162 -0.0152 0.9797 0.0369 0.0118 0.9763
здесь ожидаемые результаты (как раз и пример)
для части 1
ss (swiched state) total countable chunks switching probability 5 10 5/10
для части 2
time mag 27207 -0.03 26520 -0.98 32034 -0.67 . . . . etc
Что именно вы называете куском? – goodtimeslim
@goodtimeslim data chunks означает количество кусков между 90: 54000 внутри около длины нот (data.frame) – Alexander
Я все еще смущен относительно того, какой кусок. Если переменная 'time' составляла от 90 до 54000 для всех строк, значит ли это, что набор данных - это один кусок? Является ли фрагмент одной строкой? Является ли фрагмент группой, в которой все они имеют одинаковое значение времени? – goodtimeslim