R: рандомизировать порядок одного столбца данных.фрейм

#r #random #dataframe

#r #Случайный #фрейм данных

Вопрос:

У меня есть фрейм данных, подобный этому:

 df1 <- data.frame(A=c("xx", "be", "zz", "jj"), B=c("xyx", "bea", "cce", "ggg"), C=c("ges", "xyz", "cce", "edga"))
  

Я хочу сгенерировать ДВА случайных фрейма данных на основе df1. Для каждого случайного фрейма данных я ожидаю, что столбец A и столбец B останутся неизменными. Но только порядок столбца C может быть изменен.

Могу ли я сделать это с помощью R? Если да, не могли бы вы научить меня, как это сделать?

Большое спасибо.

Ответ №1:

При создании нового фрейма данных на основе существующего, обычной парадигмой в R является использование transform . В вашем случае вы можете просто сделать:

 df2 <- transform( df1, C = sample(C) )
  

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

1. Очень элегантно! Не знал о преобразовании. Заслуживает голосования 🙂

2. Блестяще! Нравится это!

Ответ №2:

Вы могли бы сделать что-то вроде:

 data.frame(A=df1$A, B=df1$B, C=sample(df1$C))
  

Таким образом, создание нового фрейма данных, где A и B являются старыми фреймами данных A, B и C, является случайной перестановкой столбца C старого фрейма данных с помощью sample команды. Конечно, вы бы назначили этому новому фрейму данных переменную, такую как df2 и df3.