Создание нескольких копий одного и того же фрейма данных с уникальными значениями в новом столбце

#r #dplyr #dataset

Вопрос:

У меня есть очень большой набор данных, для которого я хотел бы сделать несколько копий, но для каждой копии этого набора данных я хочу указать определенное значение в новом столбце. Цель этого состоит в том, чтобы сопоставить другой набор данных с этим набором данных по этим столбцам. Позвольте мне проиллюстрировать это примером. Допустим, мой набор данных выглядит следующим образом:

 id   value
X01    NA
X02    NA
X03    NA
X04    NA
X05    NA
X06    NA
 

Я хотел бы сделать 32 копии этого фрейма данных, а затем для каждой копии присвоить ему отдельное значение в третьем новом столбце, называемом «символ». Весь этот столбец может быть заполнен этим значением, если ввести в него список, такой как c(«яблоко», «банан», «зеленый», «красный») и т. Д. Я хочу сделать это так, чтобы после создания 32 отдельных копий этого набора данных они могли быть снова связаны вместе, причем каждая из 32 копий является разделом нового набора данных, где единственное различие между ними-это новый столбец значений. Кто-нибудь знает хороший способ сделать это? Ранее я только что создал 32 фрейма данных с помощью следующего процесса:

 df_1 <- df %>% mutate(character = "apple")
df_2 <- df %>% mutate(character = "banana")


 

и т.д., А затем связать их все вместе.

Ответ №1:

Мы можем сделать это, зациклив вектор значений в столбце list и mutate новый

 library(purrr)
library(dplyr)
library(stringr)
out <- map(c("apple", "banana"), ~ df %>% 
             mutate(character = .x))
names(out) <- str_c("df_", seq_along(out))