Size: a a a

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

2020 December 28

AS

Alexander Semenov in R (язык программирования)
Дык в GitHub Desktop-то всё работает прекрасно. Это причуды RStudio по ходу.
источник

S

Stan in R (язык программирования)
А новой версии Rstudio пока нет?
источник

EP

Ed P in R (язык программирования)
Stan
А новой версии Rstudio пока нет?
На сайте же все написано. Последний раз 1.4 была доступна в dev версии, релиза еще не было.

Тем более какой релиз, когда рождественские каникулы закончились и многие только со след. недели начнут работу
источник

АК

Артём Клевцов... in R (язык программирования)
Stan
А новой версии Rstudio пока нет?
Превью версии довольно часто обновляются.
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Если я хочу отфильтровать датасет по переменной так, чтобы убрать тех испытуемых, которые имеют данные значения в единственном числе, я делаю так:

data %>%
   filter(variable %in% (data %>% count(variable) %>% filter(n > 2) %>% pull(1)))


А если я хочу то же самое сделать для всех переменных?
источник

ЕТ

Евгений Томилов... in R (язык программирования)
  data %>%
 
 filter(across(everything(), function(x) data %>% count(.data[[x]]) %>% filter(n > 2) %>% pull(1)))
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Это не работает.
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Ну, понятно, почему.
источник

EP

Ed P in R (язык программирования)
Евгений Томилов
Если я хочу отфильтровать датасет по переменной так, чтобы убрать тех испытуемых, которые имеют данные значения в единственном числе, я делаю так:

data %>%
   filter(variable %in% (data %>% count(variable) %>% filter(n > 2) %>% pull(1)))


А если я хочу то же самое сделать для всех переменных?
О, первый раз вижу вложенные пайпы.

>А если я хочу то же самое сделать для всех переменных
я верно понимаю задачу, что хочется исключить тех участников, у которых данные собирались, например, только на бейзлайне? Если данные хранятся в одном датасете (н-р лаборатория), то у них каждый лаб. показатель будет в единственном числе
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Ed P
О, первый раз вижу вложенные пайпы.

>А если я хочу то же самое сделать для всех переменных
я верно понимаю задачу, что хочется исключить тех участников, у которых данные собирались, например, только на бейзлайне? Если данные хранятся в одном датасете (н-р лаборатория), то у них каждый лаб. показатель будет в единственном числе
Ага. То есть, грубо говоря, у меня есть 100 синих, 100 красных и 100 зелёных пациентов, а ещё 1 сиреневый, 1 белый. При этом у них ещё есть переменная, по которой получается 1 квадратный и 1 треугольный, а остальные круглые.
источник

ЕТ

Евгений Томилов... in R (язык программирования)
И я хочу убрать этих людей, которых по 1.
источник

EP

Ed P in R (язык программирования)
Евгений Томилов
И я хочу убрать этих людей, которых по 1.
чет слишком сложно описано. ИМХО данную задачу наверняка можно гораздо проще решить.

Сейчас ты пытаешься алгоритмическое решение замутить, но на практике м.б. проще в датасет с визитами глянуть или с приемами препарата. Наверняка можно вычленить этих "неудачников" на основе 2-3 критериев.
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Ed P
чет слишком сложно описано. ИМХО данную задачу наверняка можно гораздо проще решить.

Сейчас ты пытаешься алгоритмическое решение замутить, но на практике м.б. проще в датасет с визитами глянуть или с приемами препарата. Наверняка можно вычленить этих "неудачников" на основе 2-3 критериев.
Да я смотрел, к тому же я хочу запилить функцию, в которую смогу просто кидать столбцы, по которым буду фильтровать. Поэтому обращаюсь к коллективному разуму.
источник

EP

Ed P in R (язык программирования)
ну а если через какой-нибудь apply передать названия столбцов, посчитать число вхождений по ним и потом rowwise min/max сделать?
источник

A

Andrey in R (язык программирования)
dt <- data.table(patient = c(1, 1, 1, 2, 2, 3, 4), x = 1:7)
dt[, N := .SD[, .N], by = patient]
dt[N > 1]

такого решения недостаточно?
источник

ЕТ

Евгений Томилов... in R (язык программирования)
Andrey
dt <- data.table(patient = c(1, 1, 1, 2, 2, 3, 4), x = 1:7)
dt[, N := .SD[, .N], by = patient]
dt[N > 1]

такого решения недостаточно?
Ага, data.table. Спасибо, разберу этот способ.
источник

АК

Артём Клевцов... in R (язык программирования)
Andrey
dt <- data.table(patient = c(1, 1, 1, 2, 2, 3, 4), x = 1:7)
dt[, N := .SD[, .N], by = patient]
dt[N > 1]

такого решения недостаточно?
Без .SD вроде тоже должно работать.
источник

A

Andrey in R (язык программирования)
Артём Клевцов
Без .SD вроде тоже должно работать.
тут работает, но я по привычке пишу с  .SD как более универсальный вариант (сразу понятно, куда докидывать фильтрацию или подсчет пропусков, например)
источник

A

Andrey in R (язык программирования)
dt <- data.table(patient = c(1, 1, 2, 2, 3, 3), x = c(1:5, NA))
dt[, n_missing := .SD[is.na(x), .N], by = patient]

более приближенный к реалиям клинических исследований пример
источник

A

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