Организация кадра данных на основе двух столбцов в R - PullRequest
0 голосов
/ 01 мая 2020

У меня есть фрейм данных, где у меня есть несколько точек данных на каждого участника. Двумя переменными столбца являются xmin и xmax. Я вычислил диапазон х. Каждые два участника взаимодействуют, поэтому их данные должны быть взаимодополняющими. Вот почему у меня также есть столбец, указывающий, говорите ли вы или молчите (сс). Сейчас я пытаюсь организовать участников, чередуя строки на основе xmin. Я пробовал простые подмножества, фильтрации и мутации. Сейчас я пытаюсь сделать это для отдельной пары (например, участники 1 и 2). Я пытался по ID и Xmin и ID и сс.

Вот ОБРАЗЦЫ ДАННЫХ:

VP     xmin   xmax   range   ss
001a   0      1.2    1.2     0
001a   1.2    4.7    3.5     1
001a   4.7    14.7   10.0    0
001a   14.7   40.4   25.7    1
...
001b   0      4.7    4.7     0
001b   4.7    12.8   8.1     1
001b   12.8   16.6   3.8     0
001b   16.6   18.2   1.6     1
001b   18.2   38.8   20.6    0
...

Вот что я пробовал до сих пор:

#These were not all tried at the same time, rather I did not want to delete a line in case it worked. 

#001ab <- subset(mydata, ID == '001a' | ID == '001b')
#001ab <- interleave(001ab[001ab$ss == 0,], 001ab[001ab$ss == 1,], drop = TRUE)
#001ab <- 001ab %>% arrange(xmin & ID)
#001ab <- 001ab %>% mutate(overlap = as.integer(xmin >= lag(xmax)))

ЖЕЛАЕМЫЙ ВЫХОД:

VP     xmin   xmax   range   ss
001a   0      1.2    1.2     0
001b   0      4.7    4.7     0
001a   1.2    4.7    3.5     1
001b   4.7    12.8   8.1     1
001a   4.7    14.7   10.0    0
001b   12.8   16.6   3.8     0
001a   14.7   40.4   25.7    1
001b   16.6   18.2   1.6     1    
...

По сути, я хочу, чтобы идентификаторы участников чередовались в строках в зависимости от потока разговора (времени). Должен ли я далее подмножество говорить и молчать? Тогда как бы я оттуда чередовал?

1 Ответ

2 голосов
/ 01 мая 2020

Вы упомянули data.frame, поэтому вот оно в data.frame:

SortedByTwoCol <- df[
  with(df, order(xmin, xmax)),
  ]

Производство: SortedByTwoCol

    VP xmin xmax range ss
1 001a  0.0  1.2   1.2  0
5 001b  0.0  4.7   4.7  0
2 001a  1.2  4.7   3.5  1
6 001b  4.7 12.8   8.1  1
3 001a  4.7 14.7  10.0  0
7 001b 12.8 16.6   3.8  0
4 001a 14.7 40.4  25.7  1
8 001b 16.6 18.2   1.6  1
9 001b 18.2 38.8  20.6  0
> 
...