Size: a a a

R (язык программирования)

2020 August 26

A

Andrey in R (язык программирования)
Было бы неплохо взять исходники для картинки да и проверить, воспроизводятся ли таким образом результаты
источник

S

Stan in R (язык программирования)
Ed P
Всем привет! Возник небольшой вопрос по анализу выживаемости в подгруппах (аналогично графику).

https://www.nejm.org/na101/home/literatum/publisher/mms/journals/content/nejm/2013/nejm_2013.368.issue-13/nejmoa1301228/20130322/images/img_xlarge/nejmoa1301228_f2.jpeg

Я разобрался, как сделать похожий forest plot с текстом и т.п. Вопросы скорее по статистике:
1. Правильно ли я понимаю, что для каждой подгруппы (давайте для примера возьмем возраст и пол) нужно сделать сабсет и сравнить терапии?

У меня Overall модель для всех пациентов такого типа:
coxph(Surv(TIME, EVENT) ~ group, data =  df)

Cоответственно, для каждой категории каждой подгруппы модель остается та же, но датасет сабсетится по-разному:
coxph(Surv(TIME, EVENT) ~ group, data =  df[df["Sex"] == "M" ])
coxph(Surv(TIME, EVENT) ~ group, data =  df[df["Sex"] == "F" ])
и т.д.
Что за либа так отрисовывает красиво?
источник

A

Andrey in R (язык программирования)
ппздще2 :)
источник

S

Stan in R (язык программирования)
Andrey
ппздще2 :)
Таблицу?))) это видимо kable + ggplot2 тогда
источник

A

Andrey in R (язык программирования)
Нет
источник

A

Andrey in R (язык программирования)
meta::forest()
источник

A

Andrey in R (язык программирования)
Ggplot2 тоже такое умеет, но тут реализовано иначе
источник

A

Andrey in R (язык программирования)
Во, пакет metaviz для того же самого использует ggplot2
источник

EP

Ed P in R (язык программирования)
Stan
Что за либа так отрисовывает красиво?
долгая история. Сам график нашел в stackoverflow за 2013 год, там какое-то вырвиглазное решение предлагается.

из последних пакетов metafor вроде неплох
http://www.metafor-project.org/doku.php/plots:forest_plot_with_subgroups

Ну и Андрей еще мету предлагает юзать, но мне лично показалось, что она так себе
источник

S

Stan in R (язык программирования)
Супер, спасибо!
источник

a

aGricolaMZ in R (язык программирования)
не получается нагуглить, как заставить R читать utf-16.

> head(readLines("2016_D1_abg__uih.TextGrid", encoding = "UTF-16"))
[1] "\xfe\xff" ""         ""         ""         ""         ""        
There were 50 or more warnings (use warnings() to see the first 50)

Если сделать вид, что это таблица, то читает read.table() (но это какое-то кривое решение):

> head(read.table("2016_D1_abg__uih.TextGrid", fileEncoding = "UTF-16", sep = "*"))
                        V1
1    File type = ooTextFile
2   Object class = TextGrid
3                 xmin = 0
4 xmax = 9.002666666666666
5          tiers? <exists>
6                 size = 2
источник

AB

Alexey Burnakov in R (язык программирования)
Евгений Томилов
Дамы и господа. Есть датафрейм, в котором последовательно некто гениальный сделал данные такого вида:
tibble(first = c(1, 1, NA, NA),
      second = c(NA, NA, 1, 1),
      third = c(1, NA, 1, NA),
      fourth = c(NA, 1, NA, 1))


На самом деле там 500 таких переменных. =) Как мне автоматически соединить каждые две переменные в одну по типу: true_first = ifelse(is.na(first), second, first)? Reduce не подходит тут, я так понял. Циклами глупо, всяческие векторизации просто не работают в моих руках.
Хотел ответить, но не было времени. Можно сделать так, внутри ДТ, функциональный стиль.
источник

AB

Alexey Burnakov in R (язык программирования)
Alexey Burnakov
Хотел ответить, но не было времени. Можно сделать так, внутри ДТ, функциональный стиль.
library(data.table)

dt <-
    data.table(
         first = c(1, 1, NA, NA),
           second = c(NA, NA, 1, 1),
           third = c(1, NA, 1, NA),
           fourth = c(NA, 1, NA, 1)
         )

dt_clean <-
    dt[
         , Map(
              function(X, Y) ifelse(is.na(X), Y, X)
              , X = .SD[, seq(1, ncol(dt), 2), with = F]
              , Y = .SD[, seq(2, ncol(dt), 2), with = F]
         )
    ]
источник

AB

Alexey Burnakov in R (язык программирования)
подразумевается, что вытаскиваются значения в полях, а не имена. можно сделать имена
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Alexey Burnakov
library(data.table)

dt <-
    data.table(
         first = c(1, 1, NA, NA),
           second = c(NA, NA, 1, 1),
           third = c(1, NA, 1, NA),
           fourth = c(NA, 1, NA, 1)
         )

dt_clean <-
    dt[
         , Map(
              function(X, Y) ifelse(is.na(X), Y, X)
              , X = .SD[, seq(1, ncol(dt), 2), with = F]
              , Y = .SD[, seq(2, ncol(dt), 2), with = F]
         )
    ]
Ого, классно! Спасибо.
источник

AB

Alexey Burnakov in R (язык программирования)
Евгений Томилов
Ого, классно! Спасибо.
👍🏼
источник

PU

Philipp Upravitelev in R (язык программирования)
о. впервые вижу, как кто-то Map() использует %)
источник

EK

Eugene Kasatkin in R (язык программирования)
кто-нибудь знает работает ли пакет rvkstat с агентскими акками?
источник

AB

Alexey Burnakov in R (язык программирования)
Philipp Upravitelev
о. впервые вижу, как кто-то Map() использует %)
я регулярно, и в ДТ работает шустро, без явных циклов. еще дополняю Reduce-ом если нужно схлопнуть в одно поле
источник

AB

Alexey Burnakov in R (язык программирования)
Map это брат lapply, все идет в ход
источник