Добавление столбца в набор данных при определенном весовом условии - PullRequest
0 голосов
/ 07 марта 2019

Я даю набор данных под названием ChickWeight.Это имеет вес цыплят за период времени.Мне нужно ввести новую переменную, которая измеряет текущую разницу веса по сравнению с днем ​​0. Набор данных находится в библиотеке (наборы данных), поэтому вы должны иметь его.

library(dplyr)

weightgain <- ChickWeight %>% 
  group_by(Chick) %>%
  filter(any(Time == 21)) %>%
  mutate(weightgain = weight - first(weight))

У меня есть этот код, но этот код просто вычитает каждый вес на 42, который является весом в момент времени 0 для цыплёнка 1. Мне нужно, чтобы каждый цыпленок вычитал свой вес в момент времени 0, чтобыстолбец увеличения веса правильный.

1 Ответ

0 голосов
/ 07 марта 2019

Мы могли бы сделать

library(dplyr)

ChickWeight %>%
  group_by(Chick) %>%
  mutate(weightgain = weight - weight[Time == 0])
  #Or mutate(weightgain = weight - first(weight))

# A tibble: 578 x 5
# Groups:   Chick [50]
#   weight  Time Chick Diet  weightgain
#    <dbl> <dbl> <ord> <fct> <dbl>
# 1     42     0 1     1         0
# 2     51     2 1     1         9
# 3     59     4 1     1        17
# 4     64     6 1     1        22
# 5     76     8 1     1        34
# 6     93    10 1     1        51
# 7    106    12 1     1        64
# 8    125    14 1     1        83
# 9    149    16 1     1       107
#10    171    18 1     1       129
# … with 568 more rows

или с использованием базы R ave

with(ChickWeight, ave(weight, Chick, FUN = function(x) x - x[1]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...