Как создать вывод одного числа для нескольких типов шаблонов в R? - PullRequest
0 голосов
/ 19 апреля 2020

Я использую R для работы над проектом, в котором я измерил объем кальция на клапане аорты c. У меня есть 5 столбцов: объем на трех листовках и общий объем внутри / снаружи. Чтобы охарактеризовать различные распределения, которые я нахожу у моих пациентов, я хочу связать каждый шаблон (всего 12) с одним числом в новом столбце. Например:

  • Листовка объема 1> Листовка объема 2> Листовка объема 3 и Объем внутри> Снаружи -> 1
  • Листовка объема 1> Листовка объема 2> Листовка объема 3 и Объем снаружи> Внутри -> 2
  • Листовка объема 2> Листовка объема 1> Листок объема 3 и Объем внутри> Внешность -> 3

...

  • Листовка объема 3> Листовка объема 2> Листовка объема 1 и Объем снаружи> Внутри -> 12

Я изучал словари в R, но не нашел хорошего решения.

structure(
  list(ctanalysis_abscv_l = c(7.897880437, 1263.82504529, 80.64252297, 602.51047473),
       ctanalysis_abscv_r = c(15.38538081, 842.835871, 94.030160661, 694.35817674),
       ctanalysis_abscv_n = c(275.901870908, 1356.2005494, 358.2288726, 794.49459655),
       ctanalysis_inside_volume = c(35.8760545, NA, 153.5488922, 715.0530575),
       ctanalysis_outside_volume = c(264.2563071, NA, 379.5414025, 1381.3362945)),
  row.names = c(NA, 4L),
  class = "data.frame")

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

Один из вариантов - преобразовать в «длинный» формат с помощью pivot_longer, затем arrange столбец «значение», сгруппировать по «rn» в paste имена столбцов и создать индекс с match

library(dplyr)
library(tidyr)
library(stringr)
df1 %>%
    mutate(rn = row_number()) %>% 
    pivot_longer(cols = -rn, values_drop_na = TRUE) %>%
    arrange(rn, desc(value)) %>% 
    group_by(rn) %>%
    summarise(name = str_c(name, collapse="|")) %>% 
    mutate(new = match(name, unique(name))) %>% 
    select(-rn, -name) %>%
    bind_cols(df1, .)
0 голосов
/ 19 апреля 2020

Это немного сложно без предоставленного фрейма данных, НО, я думаю, вы могли бы назначить новые значения вектору, а затем связать их в фрейме данных. это будет выглядеть так:

test.dat = ## whatever your original findings are
new.num = ## the vector of the number for each column. (need 5)
new.dat = data.frame(test.dat, new.num) ## new frame with "Test.dat$Findings"

Надеюсь, это полезно. Если это не совсем то, что вы спрашиваете, извините. Я все о помощи в области медицины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...