Size: a a a

R language and Statistical data analysis

2020 February 19

PU

Philipp Upravitelev in R language and Statistical data analysis
источник

a

aGricolaMZ in R language and Statistical data analysis
Philipp Upravitelev
вопрос не совсем про R, скорее про визуализацию
допустим, я хочу сделать интерактивную карту России. где количество населения города задает размер точки на карте (москва тогда половину центральной России займет, это нормально), при клике на город - окно с какой-нибудь информацией
как бы вы такое делали? инструментарий вторичен, мне надо понять, куда искать и что гуглить
я бы делал в ggplot2 + ggiraph (если он поддерживает карты) или leaflet
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
хорошо, посмотрю
источник

АК

Артём Клевцов in R language and Statistical data analysis
aGricolaMZ
я бы делал в ggplot2 + ggiraph (если он поддерживает карты) или leaflet
Жираф довольно куцый.
источник

KF

Konstantin Firsov in R language and Statistical data analysis
Philipp Upravitelev
вопрос не совсем про R, скорее про визуализацию
допустим, я хочу сделать интерактивную карту России. где количество населения города задает размер точки на карте (москва тогда половину центральной России займет, это нормально), при клике на город - окно с какой-нибудь информацией
как бы вы такое делали? инструментарий вторичен, мне надо понять, куда искать и что гуглить
А в сторону http://jkunst.com/highcharter/ смотрели?
источник
2020 February 20

АК

Артём Клевцов in R language and Statistical data analysis
Уважаемые, подскажите элегантное решение на data.table для следующей задачи.
Из таблицы вида:
   col_1 col_2 group
1:     1    NA     1
2:    NA     2     1
3:     1    NA     2
4:    NA     2     2
Надо получить таблицу следующего вида:
   col_1 col_2 group
1:     1     2     1
2:     1     2     2
Код для воспроизведения таблицы:
DT <- data.table(
 col_1 = c(1, NA, 1, NA),
 col_2 = c(NA, 2, NA, 2),
 group = c(1, 1, 2, 2)
)
Это странный разреженный формат, которые надо каким-то образом агрегировать по группам. Возможно есть вариант с сортировкой и хитрым фильтром.
Количество столбцов может быть произвольным.
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
Артём Клевцов
Уважаемые, подскажите элегантное решение на data.table для следующей задачи.
Из таблицы вида:
   col_1 col_2 group
1:     1    NA     1
2:    NA     2     1
3:     1    NA     2
4:    NA     2     2
Надо получить таблицу следующего вида:
   col_1 col_2 group
1:     1     2     1
2:     1     2     2
Код для воспроизведения таблицы:
DT <- data.table(
 col_1 = c(1, NA, 1, NA),
 col_2 = c(NA, 2, NA, 2),
 group = c(1, 1, 2, 2)
)
Это странный разреженный формат, которые надо каким-то образом агрегировать по группам. Возможно есть вариант с сортировкой и хитрым фильтром.
Количество столбцов может быть произвольным.
не?
> tg_cols <- names(DT)[names(DT) != 'group']
> DT[, lapply(.SD, function(x) unique(na.omit(x))), by = group, .SDcols = tg_cols]
  group col_1 col_2
1:     1     1     2
2:     2     1     2
источник

АК

Артём Клевцов in R language and Statistical data analysis
Philipp Upravitelev
не?
> tg_cols <- names(DT)[names(DT) != 'group']
> DT[, lapply(.SD, function(x) unique(na.omit(x))), by = group, .SDcols = tg_cols]
  group col_1 col_2
1:     1     1     2
2:     2     1     2
Ты не считаешься, ибо моя школа и моё решение почти такое же, только чуть короче 😁
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
слышь, учитель, показывай свое решение тогда
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
и вообще, мы это в DSM уже делали
источник

АК

Артём Клевцов in R language and Statistical data analysis
Да? Я вытеснил скорее всего. Болезненно шибко.
источник

АК

Артём Клевцов in R language and Statistical data analysis
grp_col <- "group"
to_fix <- names(DT1)[colSums(is.na(DT1)) > 0L]
to_fix <- setdiff(to_fix, grp_col)
DT1[, lapply(.SD, na.omit), by = "group", .SDcols = to_fix]
источник

АК

Артём Клевцов in R language and Statistical data analysis
Пришлось нагородить, т.к. в реальном датасете не все столбцы содержали пропуски, что приводит к появления дублирующихся строк.
источник

АК

Артём Клевцов in R language and Statistical data analysis
Philipp Upravitelev
не?
> tg_cols <- names(DT)[names(DT) != 'group']
> DT[, lapply(.SD, function(x) unique(na.omit(x))), by = group, .SDcols = tg_cols]
  group col_1 col_2
1:     1     1     2
2:     2     1     2
Вместо unique можно first.
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
я бы предпочел [1], пожалуй
источник

АК

Артём Клевцов in R language and Statistical data analysis
Да, что-то в first наворотили внутри проверок.
источник

ГД

Григорий Демин in R language and Statistical data analysis
Артём Клевцов
grp_col <- "group"
to_fix <- names(DT1)[colSums(is.na(DT1)) > 0L]
to_fix <- setdiff(to_fix, grp_col)
DT1[, lapply(.SD, na.omit), by = "group", .SDcols = to_fix]
а разве в .SD входят группирующие колонки? Можно оставить
```
to_fix <- names(DT1)[colSums(is.na(DT1)) > 0L]
DT1[, lapply(.SD, na.omit), by = "group", .SDcols = to_fix]
```
источник

АК

Артём Клевцов in R language and Statistical data analysis
Григорий Демин
а разве в .SD входят группирующие колонки? Можно оставить
```
to_fix <- names(DT1)[colSums(is.na(DT1)) > 0L]
DT1[, lapply(.SD, na.omit), by = "group", .SDcols = to_fix]
```
Хм, по идее не должна, но если она явно будет в .SDcols указана не понятно.
источник

ИП

Иван Поздняков in R language and Statistical data analysis
я бы попробовал перевести в длинный, дропнуть NA, потом обратно в широкий
источник

АК

Артём Клевцов in R language and Statistical data analysis
Принято, спасибо. Потом сравню 2 варианта.
источник