dplyr: сохранить счетчик как новую переменную - PullRequest
1 голос
/ 17 июня 2020

Я использовал следующее, чтобы создать фрейм данных.

set.seed(9)
df <- data.frame(
    group=c(rep(1,5), rep(2,5)),
    var1=round(runif(10,1,3),0))

Затем я использую следующее для подсчета количества строк в группе:

df %>% add_count(group, name="GSIZE")

Затем я пытаюсь вычислить новая переменная:

df$var2<-df$var1+df$GSIZE

Вот когда я получаю сообщение об ошибке ниже:

Ошибка в $<-.data.frame (*tmp*, var2, value = numeri c ( 0)): замена имеет 0 строк, данные имеют 10

Есть идеи, как это исправить? Похоже, что GSIZE не рассматривался как переменная, сохраненная в кадре данных df.

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Вы только посчитали строки, но не обновили df. Вам необходимо это сделать.

df <- df %>% add_count(group, name="GSIZE")

Затем вы можете использовать свой код или использовать его в dplyr

df %>% mutate(var2 = var1 + GSIZE)

Что дает:

   group var1 GSIZE var2
1      1    1     5    6
2      1    1     5    6
3      1    1     5    6
4      1    1     5    6
5      1    2     5    7
6      2    1     5    6
7      2    2     5    7
8      2    2     5    7
9      2    2     5    7
10     2    3     5    8
0 голосов
/ 17 июня 2020

Вы должны явно указать назначение в R. Но для рассматриваемой проблемы этого достаточно.

    set.seed(9)
    df <- data.frame(
    group=c(rep(1,5), rep(2,5)),
    var1=round(runif(10,1,3),0)) %>% 
    add_count(group, name="GSIZE") %>% 
    mutate(var2 = var1+GSIZE)


...