0

我有一个包含两列的 df,ID 和一个带有“Y”和“N”的字符变量。我想将第二列排列 1000 次并分配一个值来标识每个排列集。我的最终目标是使用排列创建一个空分布。

boot <- transform(boot, column2 = sample(column2)) 

我已经完成了一个排列,但我一直在努力循环这个 1000 次并为每个排列分配一个值。这也每次创建一个新的 df,这似乎效率低下,但我对 R 比较陌生,所以任何建议都是非常有帮助。

4

1 回答 1

1

使用 tidyverse 函数可以实现这一点。假设您希望每个 id 有 4 个排列。您可以以“长”和“宽”格式获取它们。

library(tidyverse)

long_format <- tibble(
    id = 1:1000,
    data = map(id, ~sample(c("Y", "N"), 4, replace = TRUE))
    ) %>%  
    unnest(data)

long_format
#> # A tibble: 4,000 x 2
#>       id data 
#>    <int> <chr>
#>  1     1 N    
#>  2     1 N    
#>  3     1 Y    
#>  4     1 Y    
#>  5     2 Y    
#>  6     2 N    
#>  7     2 N    
#>  8     2 N    
#>  9     3 N    
#> 10     3 Y    
#> # ... with 3,990 more rows

宽的

在这里,我们将 ids 作为列名传递

wide_format <- long_format %>% 
        pivot_wider(names_from = id, values_from = data, names_prefix = "p_") %>% 
        unnest(everything())

wide_format
#> # A tibble: 4 x 1,000
#>   p_1   p_2   p_3   p_4   p_5   p_6   p_7   p_8   p_9   p_10  p_11  p_12  p_13 
#>   <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 N     Y     N     Y     N     Y     N     N     Y     N     N     Y     N    
#> 2 N     N     Y     N     N     Y     Y     Y     N     N     N     N     N    
#> 3 Y     N     N     Y     Y     Y     Y     Y     N     Y     Y     Y     Y    
#> 4 Y     N     N     N     Y     Y     N     Y     N     Y     N     Y     Y    
#> # ... with 987 more variables: p_14 <chr>, p_15 <chr>, p_16 <chr>, p_17 <chr>,
#> #   p_18 <chr>, p_19 <chr>, p_20 <chr>, p_21 <chr>, p_22 <chr>, p_23 <chr>,
#> #   p_24 <chr>, p_25 <chr>, p_26 <chr>, p_27 <chr>, p_28 <chr>, p_29 <chr>,
#> #   p_30 <chr>, p_31 <chr>, p_32 <chr>, p_33 <chr>, p_34 <chr>, p_35 <chr>,
#> #   p_36 <chr>, p_37 <chr>, p_38 <chr>, p_39 <chr>, p_40 <chr>, p_41 <chr>,
#> #   p_42 <chr>, p_43 <chr>, p_44 <chr>, p_45 <chr>, p_46 <chr>, p_47 <chr>,
#> #   p_48 <chr>, p_49 <chr>, p_50 <chr>, p_51 <chr>, p_52 <chr>, p_53 <chr>,
#> #   p_54 <chr>, p_55 <chr>, p_56 <chr>, p_57 <chr>, p_58 <chr>, p_59 <chr>,
#> #   p_60 <chr>, p_61 <chr>, p_62 <chr>, p_63 <chr>, p_64 <chr>, p_65 <chr>,
#> #   p_66 <chr>, p_67 <chr>, p_68 <chr>, p_69 <chr>, p_70 <chr>, p_71 <chr>,
#> #   p_72 <chr>, p_73 <chr>, p_74 <chr>, p_75 <chr>, p_76 <chr>, p_77 <chr>,
#> #   p_78 <chr>, p_79 <chr>, p_80 <chr>, p_81 <chr>, p_82 <chr>, p_83 <chr>,
#> #   p_84 <chr>, p_85 <chr>, p_86 <chr>, p_87 <chr>, p_88 <chr>, p_89 <chr>,
#> #   p_90 <chr>, p_91 <chr>, p_92 <chr>, p_93 <chr>, p_94 <chr>, p_95 <chr>,
#> #   p_96 <chr>, p_97 <chr>, p_98 <chr>, p_99 <chr>, p_100 <chr>, p_101 <chr>,
#> #   p_102 <chr>, p_103 <chr>, p_104 <chr>, p_105 <chr>, p_106 <chr>,
#> #   p_107 <chr>, p_108 <chr>, p_109 <chr>, p_110 <chr>, p_111 <chr>,
#> #   p_112 <chr>, p_113 <chr>, ...

reprex 包(v2.0.0)于 2021-06-22 创建

于 2021-06-22T20:45:22.307 回答