R语言 数据集中的名字和姓氏排列

nfg76nw0  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(136)

我有一个数据集(近26,000行),其中每列中的名字和姓氏如下所示:

Id       Name  Firstname1 Firstname2 Firstname3 
 1       AL      BE          GAM       ZET
2        IO      PA          TA        MA

我希望结果列中的名字和姓氏的所有可能排列如下:

Id Name Firstname1 Firstname2 Firstname3 Result1 Result2...   Resultatn 
1  AL    BE       GAM         ZET    ALBEGAMZET ALBEZETGAM   GAMZETBEAL
2   IO    PA     TA           ME       IOPATAME  IOPAMETA     TAMEPAIO

谢谢你的帮助!
我已经尝试过了,但我正在寻求帮助来概括

df$result1<-paste(df$Name, df$Firstname1,df$Firstname2,df$Firstname3)

df$result2<-paste(df$Name, df$Firstname1,df$Firstname3,df$Firstname2)
jtw3ybtb

jtw3ybtb1#

您可以使用combinat::permngtools::permutations创建列的排列。然后,对于每种组合,您可以将列以指定的顺序粘贴在一起。

df1 <- tribble(
  ~Id       ,~Name  ,~Firstname1 ,~Firstname2 ,~Firstname3, 
  1   ,    "AL"   ,   "BE"    ,      "GAM"   ,    "ZET",
  2   ,     "IO"  ,    "PA"    ,      "TA"    ,    "MA",
)

options <- combinat::permn(colnames(df1)[-(1:2)])

df2 <- map_dfc(options, ~ pmap_chr(df1[,c("Name", .x)], ~ paste0(..., collapse = ""))) %>%
  set_names(paste0("Result", 1:length(options))) %>%
  bind_cols(df1, .)

因此,对于每个option.x,我们将按照该顺序(df1[,c("Name", .x)])选择数据框架的列,并将它们的行粘贴在一起。

相关问题