Мы можем использовать sample
в последовательности строк (row_number()
) и переставить «значение» на основе выборочного индекса
df1 %>%
group_by(class) %>%
mutate(value = value[sample(row_number())])
Или, как упоминалось в комментариях @RonakShah, если у нас есть только одна строка, то использование sample
вызовет sample
последовательности значений. Таким образом, если мы непосредственно используем sample
для 'значения', тогда можно использовать условие if/else
df1 %>%
group_by(class) %>%
mutate(value = if(n() == 1) value else sample(value, n()))
Если мы хотим использовать sample_n
, это можно сделать в do
df1 %>%
group_by(class) %>%
do(sample_n(., size = nrow(.)))
ПРИМЕЧАНИЕ. Нам нужно указать nrow
вместо n()
, так как некоторые специфические функции приведения в движение работают внутри определенных функций, таких как mutate/fsummarise/filter/arrange
и т. Д., Но не реализованы для работы вместе с sample_n