У меня есть переменная «markr», которая упорядочена по порядку, и корреляция между последующими элементами «markr» приведена в переменных corr.
markr <- c("A", "B", "C", "D", "E", "g", "A1", "B1", "cc", "dd",
"f", "gg", "h", "K")
corr <- c( 1, 1, 1, 1, 0.96, 0.5, 0.96, 1 , 1 ,
1 , 0.85, 0.99, 1)
Мне нужно сгруппировать маркер на основе corr без изменения порядка членов маркера. Группу лучше объяснить следующей схемой:
Отдельные члены abject markr, у которых corr больше 0,95, будут входить в одну группу. Начиная с первого значения, когда значение corr падает ниже 0,95, затем начинается вторая группа и продолжается до тех пор, пока значение corr снова не опустится ниже 0,95, процесс продолжается до конца данных. Групповая переменная именуется первым и последним членами группы, например - A-g, A1-f, gg-k.
Таким образом, ожидаемый результат равен.
markr <- c("A", "B", "C", "D", "E", "g",
"A1", "B1", "cc", "dd", "f",
"gg", "h", "K")
group <- c("A-g", "A-g", "A-g", "A-g","A-g", "A-g",
"A1-f", "A1-f", "A1-f", "A1-f","A1-f",
"gg-k", "gg-k", "gg-k")
dataf <- data.frame (markr, group)
dataf
markr group
1 A A-g
2 B A-g
3 C A-g
4 D A-g
5 E A-g
6 g A-g
7 A1 A1-f
8 B1 A1-f
9 cc A1-f
10 dd A1-f
11 f A1-f
12 gg gg-k
13 h gg-k
14 K gg-k
Как я могу автоматизировать этот процесс, поскольку у меня очень большой такой набор данных.