Сопоставление значения строки фрейма данных с его соответствующими значениями - PullRequest
2 голосов
/ 13 апреля 2019

На рисунке ниже приведены мои данные в R:

enter image description here

Воспроизводимый пример:

data <- data.frame(
  time = rep(0.2, 5),
  m1 = c(9,15,2,8,18),
  m2 = c(11,1,13,12,NA),
  m3 = c(16,NA,7,17,NA),
  m4 = c(10,NA,3,4,NA),
  m5 = c(14,NA,6,NA,NA),
  m6 = c(NA,NA,5,NA,NA)
)

Я хочу следующий вывод, который представляет собой таблицу, отображающую каждое значение в наборе данных под номером строки, которой принадлежит значение:

enter image description here

Заранее благодарю за помощь!

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

попробуйте это:

library(tidyverse)

data %>% 
  rownames_to_column("row_id") %>% 
  gather(key, value, -time, -row_id) %>% 
  select(1, 4) %>% 
  na.omit() %>% 
  spread(value, row_id)

вывод:

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1 2 3 3 4 3 3 3 4 1  1  1  4  3  1  2  1  4  5
0 голосов
/ 13 апреля 2019

Удалить первый столбец, транспонировать то, что осталось, преобразовать его обратно во фрейм данных, установить имена столбцов в исходные номера строк, сложить их и пропустить строки NA.Затем переупорядочить по значениям.

d <- na.omit(stack(setNames(as.data.frame(t(data[-1])), 1:nrow(data))))
d[order(d$values), ]

давая:

   values ind
8       1   2
13      2   3
16      3   3
22      4   4
18      5   3
17      6   3
15      7   3
19      8   4
1       9   1
4      10   1
2      11   1
20     12   4
14     13   3
5      14   1
7      15   2
3      16   1
21     17   4
25     18   5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...