Воспроизводимый тиббл: У меня есть база данных, подобная показанной ниже. Разница в том, что база данных, с которой я работаю, намного больше.
general_tibble <- tibble(gender = c("female", "female", "male"),
age = c(18, 19,18),
age_partner = c(22,20,17),
max_age = c(60, 60, 65),
nrs =c(42,41,47))
general_tibble
Результат:
gender age age_partner max_age nrs
1 female 18 22 60 42
2 female 19 20 60 41
3 male 18 17 65 47
Вопрос:
Как создать новую таблицу из предыдущей таблицы, которая принимает значение nrs
и создает переменную столбца с именем n
, которая переходит от 0 к значению в nrs
?
Чтобы проиллюстрировать это далее, в строке 1 general_tibble
столбец nrs
равен 42, поэтому столбец будет идти от 0 до 42, в строке 2 nrs
равен 41, поэтому столбец будет идти от 0 до 41, и то же самое для ряда 3.
Я сейчас использую код ниже. Это работает, но когда general_tibble
слишком большой, код работает очень медленно.
general_list <- list()
for(i in 1:NROW(general_tibble)){
general_list[[i]] <- data.frame(general_tibble[i, ],
n = 0:general_tibble[[i, "nrs"]])
}
Тогда я bind_rows()
general_list
для получения general_binded
general_binded <- bind_rows(general_list)
general_binded[c(1:5, 38:42),]
Результат:
gender age age_partner max_age nrs n
1 female 18 22 60 42 0
2 female 18 22 60 42 1
3 female 18 22 60 42 2
4 female 18 22 60 42 3
5 female 18 22 60 42 4
38 female 18 22 60 42 37
39 female 18 22 60 42 38
40 female 18 22 60 42 39
41 female 18 22 60 42 40
42 female 18 22 60 42 41
PS: В цикле for я использую data.frame()
вместо tibble()
, потому что я хочу перезаписать строки. Если у вас есть какой-то совет, связанный с тибблами или кадрами, я с радостью приму его.