在 r 中将一列排列 1000 次
Permute one column 1000 times in r
我有一个包含两列的 df,ID 和一个带有“Y”和“N”的字符变量。我想将第二列排列 1000 次并分配一个值来标识每个排列集。我的最终目标是创建一个带有排列的空分布。
boot <- transform(boot, column2 = sample(column2))
我已经得到了这个来进行一个排列但是我一直在努力循环这个 1000 次并为每个分配一个值 permutation.This 每次也创建一个新的 df 这看起来效率很低但我相对较新到 R 所以任何建议都会很有帮助。
使用 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
宽
这里我们将 id 作为列名传递
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 package (v2.0.0)
创建于 2021-06-22
我有一个包含两列的 df,ID 和一个带有“Y”和“N”的字符变量。我想将第二列排列 1000 次并分配一个值来标识每个排列集。我的最终目标是创建一个带有排列的空分布。
boot <- transform(boot, column2 = sample(column2))
我已经得到了这个来进行一个排列但是我一直在努力循环这个 1000 次并为每个分配一个值 permutation.This 每次也创建一个新的 df 这看起来效率很低但我相对较新到 R 所以任何建议都会很有帮助。
使用 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
宽
这里我们将 id 作为列名传递
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 package (v2.0.0)
创建于 2021-06-22