Size: a a a

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

2020 September 10

М

Михаил in R (язык программирования)
Всем привет!
Подскажите, как можно разметить кадр данных  так, чтобы внутри каждой серии начинался счетчик?
library(dplyr)
d <- tibble(val = rnorm(1:10), load = c(T,T,F,T,T,T,F,F,T,T))

в результате хочу получить вектор
[1]  1  2 NA  1  2  3 NA NA  1  2


История: есть процесс с остановками. Хочу проверить есть ли статистически-значимые различия в зависимости от того, как много времени прошло от остановки.  Для этого и хочу разметить данные.
источник

PD

Pavel Demin in R (язык программирования)
Михаил
Всем привет!
Подскажите, как можно разметить кадр данных  так, чтобы внутри каждой серии начинался счетчик?
library(dplyr)
d <- tibble(val = rnorm(1:10), load = c(T,T,F,T,T,T,F,F,T,T))

в результате хочу получить вектор
[1]  1  2 NA  1  2  3 NA NA  1  2


История: есть процесс с остановками. Хочу проверить есть ли статистически-значимые различия в зависимости от того, как много времени прошло от остановки.  Для этого и хочу разметить данные.
раз никто не отвечает пока, напишу я.
можно решить в лоб через цикл: решение так себе, зато первое приходит в голову

d <- data.frame(val = rnorm(1:10), load = c(T,T,F,T,T,T,F,F,T,T))
counter = 1
d$counter = NA
for (i in 1:nrow(d)) {
 if (d$load[i] == TRUE) {
   d$counter[i] = counter
   counter = counter + 1
 } else {
   counter = 1
 }
}
источник

YS

Yuriy Saraikin in R (язык программирования)
Михаил
Всем привет!
Подскажите, как можно разметить кадр данных  так, чтобы внутри каждой серии начинался счетчик?
library(dplyr)
d <- tibble(val = rnorm(1:10), load = c(T,T,F,T,T,T,F,F,T,T))

в результате хочу получить вектор
[1]  1  2 NA  1  2  3 NA NA  1  2


История: есть процесс с остановками. Хочу проверить есть ли статистически-значимые различия в зависимости от того, как много времени прошло от остановки.  Для этого и хочу разметить данные.
как вариант
`d %>%
 mutate(id = data.table::rleid(load)) %>%
 group_by(id) %>%
 mutate(index = row_number()*load,
        index = na_if(index, 0)) %>%
 select(-id)`
источник

М

Михаил in R (язык программирования)
@Gotfr1d, @saraikinuv, спасибо!
источник

St

Snow time in R (язык программирования)
Ребят, как можно объединить 2 таблицы с одинаковыми столбцами в случае когда:
Таблица 1 содержит в себе строки таблицы 2 кроме столбца С. На выходе нужна таблица 1, но уже с заполненным столбцом C для строк из второй таблицы.
источник

St

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

St

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

А

Александр in R (язык программирования)
Snow time
Ребят, как можно объединить 2 таблицы с одинаковыми столбцами в случае когда:
Таблица 1 содержит в себе строки таблицы 2 кроме столбца С. На выходе нужна таблица 1, но уже с заполненным столбцом C для строк из второй таблицы.
merge left ?
источник

St

Snow time in R (язык программирования)
Как выглядит функция?
источник

St

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

IS

Ivan Struzhkov in R (язык программирования)
left_join()
источник

St

Snow time in R (язык программирования)
При left_join столбец C остается пустым
источник

St

Snow time in R (язык программирования)
left_join сработал, но для этого пришлось удалить столбец C в первой таблице, благо он был пустой)
источник

IS

Ivan Struzhkov in R (язык программирования)
там можно принудительно указать какие столбцы использовать как ключи
источник

IS

Ivan Struzhkov in R (язык программирования)
через аргумент by=c("XXX"="ZZZ") или если просто одинаковое название полей by=c("XXX")
источник

St

Snow time in R (язык программирования)
Если, к примеру, в Таблице 1 в столбце C одни значения XXX. Как тогда можно указать by, чтобы значения в этом столбце переписались значениями из второй таблицы YYY?
источник

IS

Ivan Struzhkov in R (язык программирования)
нет, это не вопрос переписывания. Ряд полей из обоих датасетов могут быть использованы как ключи. По умолчанию - будут использованы все совпадающие по названиями
источник

АК

Артём Клевцов... in R (язык программирования)
Snow time
Если, к примеру, в Таблице 1 в столбце C одни значения XXX. Как тогда можно указать by, чтобы значения в этом столбце переписались значениями из второй таблицы YYY?
library(data.table)
setDT(DF1)
setDT(DF2)
DF1[DF2, C := i.C, on = .(A, B)]
источник

St

Snow time in R (язык программирования)
Что здесь подразумевается под i?
источник

АК

Артём Клевцов... in R (язык программирования)
Правая таблица. Этот префикс добавляется в случае совпадения имён столбцов.
источник