Size: a a a

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

2021 February 27

EM

Evgeniy Myskov in R (язык программирования)
Dmitry Perepechin
Там в вопросе специально указано что это не читшит с рстудио :)
Сорри)
источник

E

Eкатерина in R (язык программирования)
здравствуйте. у меня данные в таком формате, что есть разные переменные, которые в подходящем формате. но вот индустрия компании закодирована через 0 и 1. т.е в дата сете столбцы с названием индустрии (медицина, образование, торговля), а в этих столбцах 0 и 1. если это например образование то в стороке 1, а все остальные столбцы с индустриями будут содержать 0. как мне привести это в такой формат, когда у меня есть один столбец под названием индустрия, а в строках у него название этих индустрий?
источник

М

Марк in R (язык программирования)
Eкатерина
здравствуйте. у меня данные в таком формате, что есть разные переменные, которые в подходящем формате. но вот индустрия компании закодирована через 0 и 1. т.е в дата сете столбцы с названием индустрии (медицина, образование, торговля), а в этих столбцах 0 и 1. если это например образование то в стороке 1, а все остальные столбцы с индустриями будут содержать 0. как мне привести это в такой формат, когда у меня есть один столбец под названием индустрия, а в строках у него название этих индустрий?
Это называется широкий формат. Вам нужно в длинный их перевести. Воспользоваться можно функцией pivot_longer из пакета tidyr.
источник

М

Марк in R (язык программирования)
Eкатерина
здравствуйте. у меня данные в таком формате, что есть разные переменные, которые в подходящем формате. но вот индустрия компании закодирована через 0 и 1. т.е в дата сете столбцы с названием индустрии (медицина, образование, торговля), а в этих столбцах 0 и 1. если это например образование то в стороке 1, а все остальные столбцы с индустриями будут содержать 0. как мне привести это в такой формат, когда у меня есть один столбец под названием индустрия, а в строках у него название этих индустрий?
источник

MP

Maksim Palko in R (язык программирования)
Добрый день. Помогите пожалуйста, выполнить задачу более быстрым способом. У меня есть таблица в которой для каждого пользователя указаны 14 пар X и Y. Я хочу посчитать для каждого пользователя lm модельку и сформировать табличку, где для каждого будет указана r.squared. То, как я это реализовал на малом кол-ве пользователей сильно долго работает на большом кол-ве. Помогите, пожалуйста, оптимизировать.
источник

ДВ

Дмитрий Володин... in R (язык программирования)
Maksim Palko
Добрый день. Помогите пожалуйста, выполнить задачу более быстрым способом. У меня есть таблица в которой для каждого пользователя указаны 14 пар X и Y. Я хочу посчитать для каждого пользователя lm модельку и сформировать табличку, где для каждого будет указана r.squared. То, как я это реализовал на малом кол-ве пользователей сильно долго работает на большом кол-ве. Помогите, пожалуйста, оптимизировать.
Почитайте в пакете purrr про nested датафреймы. В читшите на сайте рстудии по этому пакету как раз примеры применения линейной регрессии к разным элементам группы внутри датафрейма
источник

MP

Maksim Palko in R (язык программирования)
Дмитрий Володин
Почитайте в пакете purrr про nested датафреймы. В читшите на сайте рстудии по этому пакету как раз примеры применения линейной регрессии к разным элементам группы внутри датафрейма
Спасибо огромное, ушел читать
источник

EP

Ed P in R (язык программирования)
Марк
Это называется широкий формат. Вам нужно в длинный их перевести. Воспользоваться можно функцией pivot_longer из пакета tidyr.
Не совсем. Если нужная переменная действительно только одна, то можно и "rowwise" функциями обойтись. Я наизусть не помню, можно сделать примерно так:
1) через "rowwise" which узнать номер нужного столбца
2) сделать вектор с отраслями и указать название отрасли по номеру из шага (1)
источник

A

Andrey in R (язык программирования)
Ivan Struzhkov
Слушайте а кто знает .SD в деле сабсета по группам оптимизировать будут?

а то тут такое дело в data table

> system.time(
+ lc2[,.I[rank==max(rank)],client_code][])
  user  system elapsed
 0.605   0.017   0.637
> system.time(
+ lc2[,.SD[rank==max(rank)],client_code][])
Timing stopped at: 63.17 2.041 66.88
а оба эти варианта точно возвращают одно и то же? https://stackoverflow.com/questions/31852294/how-to-speed-up-subset-by-groups тут пишут, что уже все оптимизировано для таких простых случаев, как mean(), max() и пр.
источник

AK

Alexey Khavylo in R (язык программирования)
Добрый день!
Подскажите, можно средствами data.table сделать аналогично этому?
dt  %>%  mutate(across(var1:var24, as.numeric))
источник

PU

Philipp Upravitelev in R (язык программирования)
Alexey Khavylo
Добрый день!
Подскажите, можно средствами data.table сделать аналогично этому?
dt  %>%  mutate(across(var1:var24, as.numeric))
что-то типа такого, если надо создать новую таблицу
dt[, lapply(.SD, as.numeric), .SDcols = var1:var24)]
источник

AK

Alexey Khavylo in R (язык программирования)
Спасибо!
А если нужно перезаписать те же колонки?
источник

PU

Philipp Upravitelev in R (язык программирования)
Alexey Khavylo
Спасибо!
А если нужно перезаписать те же колонки?
насколько я вижу, в твоем коде тоже перезаписи нет? я тайди не очень знаю

я бы вот так делал, вместо payments2, 1:3 и  is.character проставь, что тебе нужно
tg_cols <- payments2[, names(.SD), .SDcols = 1:3] 
payments2[, (tg_cols) := lapply(.SD, is.character), .SDcols = tg_cols]
источник

AK

Alexey Khavylo in R (язык программирования)
Ага, спасибо. Буду пробовать.
источник

YB

Yurii Barvinchenko in R (язык программирования)
Коллеги, добрый день!

На основе привемра из книги "R для науки о данных" строю 2 варианта моделей по странам

library(modelr)
library(tidyverse)
library(gapminder)
gapminder

country_model <- function(df) {
 lm(lifeExp ~ year, data = df)
}

country_model2 <- function(df) {
 lm(lifeExp ~ year+gdpPercap, data = df)
}

by_country <- gapminder %>%
 group_by(country, continent) %>%
 nest() %>%
 mutate(model1 = map(data, country_model),
        model2 = map(data, country_model2))

Пока не понимаю как;
1. "красиво" передать данные этим моделям для предсказания?
2. если у меня не 2 модели, .а 20, как написать код, .который будет дальше использовать 1 лучшую модель по каждой стране?
источник

IS

Ivan Struzhkov in R (язык программирования)
Andrey
а оба эти варианта точно возвращают одно и то же? https://stackoverflow.com/questions/31852294/how-to-speed-up-subset-by-groups тут пишут, что уже все оптимизировано для таких простых случаев, как mean(), max() и пр.
Ну не совсем, но затратная операция одинаковая.
Вот с идентичным возвратом
>  system.time(lc2[lc2[,.I[rank==max(rank)],client_code]$V1])
  user  system elapsed
 0.737   0.028   0.779
>  system.time(lc2[,.SD[rank==max(rank)],client_code][])
Timing stopped at: 33.32 0.743 34.57
источник

IS

Ivan Struzhkov in R (язык программирования)
@konhis Поделись плиз по возможности - есть простой способ делать сабсет по группам внутри чейнов data table без конструкции .SD? Она прям сильно жрет скорость
источник

AS

Alexander Semenov in R (язык программирования)
Ivan Struzhkov
@konhis Поделись плиз по возможности - есть простой способ делать сабсет по группам внутри чейнов data table без конструкции .SD? Она прям сильно жрет скорость
Мсье куда-то спешит? (с)
источник

PU

Philipp Upravitelev in R (язык программирования)
Ivan Struzhkov
@konhis Поделись плиз по возможности - есть простой способ делать сабсет по группам внутри чейнов data table без конструкции .SD? Она прям сильно жрет скорость
пока не понял проблему
*офф, смогу вечером посмотреть только
источник

IS

Ivan Struzhkov in R (язык программирования)
Alexander Semenov
Мсье куда-то спешит? (с)
Ну вот что, я зря что ли учил этот клингонский?
':='

Сотни мегов данных крутятся быстро даже на локальной машине, все дела. Но как только вознкает вопрос фильтрации по группам - скорость всего процентов на 30% быстрее диплюра
источник