R语言 复制行并从列表中为每次复制添加唯一值

4jb9z9bj  于 2023-06-03  发布在  其他
关注(0)|答案(1)|浏览(116)

我有一个大型数据集,其中每行都是一个带有ID的模型。每一行还有一列,其中指定了零件号。
我目前面临的情况是,我需要将一个行/模型复制10次,这样我就可以指定与之关联的10个部件号。我的想法是,行应该被复制,并从列表中分配部件号。
到目前为止,我能够执行基本的赋值操作,例如d$Part_Num[d$ID==8735] <-“1234”
对我来说,困惑的是如何复制它们,然后分配部件号,因为我以前可以使用模型ID来分配部件号。但是,一旦行被复制,模型ID也将被复制很多次-使ID变得不唯一。
注意:我必须使用相同的部件号列表对模型A、B、C和D重复相同的过程,但是如果增加这种重复是不优雅的,我可以只运行代码多次。
下面是数据集的玩具df:

structure(list(ID = 8735:8743, Model = c("Model_A", "Model_B", 
"Model_C", "Model_D", "Model_E", "Model_F", "Model_G", "Model_H", 
"Model_I"), Part_Num = c(NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_)), row.names = 8615:8623, class = "data.frame")

下面是一个玩具零件编号列表:

list(1234, 1235, 1236, 1237, 1238, 1239, 1230, 1231, 1232, 1233)
fnx2tebb

fnx2tebb1#

你可以这样做:

library(tidyverse)
df <- structure(list(ID = 8735:8743, Model = c("Model_A", "Model_B", 
                                               "Model_C", "Model_D", "Model_E", "Model_F", "Model_G", "Model_H", 
                                               "Model_I"), Part_Num = c(NA_character_, NA_character_, NA_character_, 
                                                                        NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
                                                                        NA_character_)), row.names = 8615:8623, class = "data.frame")
df <- df |> 
  mutate(Part_Num = map(Part_Num, function(.x) seq(1,4))) |> 
  unnest(Part_Num)

相关问题