как генерировать столбцы с повторяющимися значениями в R

#r #dplyr

#r #dplyr

Вопрос:

Я хочу получить следующую таблицу, используя повторяющиеся данные:

    

 X1 X2  M1  Q   O
    1   1   m1  q1  20
    2   1   m2  q2  20
    3   1   m3  q3  16
    4   2   m1  q1  15
    5   2   m2  q2  12
    6   2   m3  q3  19
    7   3   m1  q1  17
    8   3   m2  q2  19
    9   3   m3  q3  17
    10  4   m1  q1  19
    11  4   m2  q2  15
    12  4   m3  q3  19 

Столбец O представляет собой случайные данные между 12,20.

Я использовал следующие коды, но это не работает

 tibble(x11 = c(1:12)) %>% 
  mutate(x2 = rep(row_number(), each=3, length.out = n()),
M1=rep(row_number("m"), each=3, length.out = n()),Q=rep(row_number("q"), each=3, length.out = n())) 

Ответ №1:

Мы создаем группировку, rep сопоставляя row_number() , затем создаем ‘M1’, ‘Q’ с помощью paste ( str_c ) символов ‘m’, ‘q’ с последовательностью строк ( row_number() ), а также используем sample для выборки числа от 12 до 20 для создания ‘O’

 library(dplyr)
library(stringr)
tibble(X1= c(1:12)) %>% 
    group_by(X2 = factor(rep(row_number(), each=3, length.out = n()))) %>% 
    mutate(M1 = str_c('m', row_number()), Q = str_c('q', row_number()),
            O = sample(12:20, n(), replace = FALSE)) %>%
    ungroup
 

-вывод

 # A tibble: 12 x 5
#      X1    X2 M1    Q         O
#   <int> <fct> <chr> <chr> <int>
# 1     1     1 m1    q1       17
# 2     2     1 m2    q2       19
# 3     3     1 m3    q3       20
# 4     4     2 m1    q1       15
# 5     5     2 m2    q2       13
# 6     6     2 m3    q3       17
# 7     7     3 m1    q1       14
# 8     8     3 m2    q2       17
# 9     9     3 m3    q3       15
#10    10     4 m1    q1       16
#11    11     4 m2    q2       19
#12    12     4 m3    q3       12
 

Комментарии:

1. Большое спасибо, как я могу сделать x2 в качестве фактора?

2. @user330 просто оберните factor вокруг него

Ответ №2:

Если ваш фрейм данных равен df, то:

 df$O <- sample(12:20, nrow(df), replace = TRUE)