R - 通过随机选择组合数据帧来创建新的数据帧

时间:2014-04-30 08:19:16

标签: r random dataframe

我是一个R-beginner,我有一点问题。我想通过随机选择组合数据帧来创建新的数据帧。

我有4个(类别),每个分为10个数据帧,我想创建10个新数据帧,每个类别包含1个数据帧。

例如,这些是我的数据框:

Cat_1_Data_1 Cat_2_Data_1 Cat_3_Data_1 Cat_4_Data_1 Cat_1_Data_2 Cat_2_Data_2 Cat_3_Data_2 Cat_4_Data_2 Cat_1_Data_3 Cat_2_Data_3 Cat_3_Data_3 Cat_4_Data_3 Cat_1_Data_4 Cat_2_Data_4 Cat_3_Data_4 Cat_4_Data_4 Cat_1_Data_5 Cat_2_Data_5 Cat_3_Data_5 Cat_4_Data_5 Cat_1_Data_6 Cat_2_Data_6 Cat_3_Data_6 Cat_4_Data_6 Cat_1_Data_7 Cat_2_Data_7 Cat_3_Data_7 Cat_4_Data_7 Cat_1_Data_8 Cat_2_Data_8 Cat_3_Data_8 Cat_4_Data_8 Cat_1_Data_9 Cat_2_Data_9 Cat_3_Data_9 Cat_4_Data_9 Cat_1_Data_10 Cat_2_Data_10 Cat_3_Data_10 Cat_4_Data_10

创建新的数据框(我是怎么做的):

new_data_1 <- rbind(cat_1_data_1,cat_2_data_1,cat_3_data_1,cat_4_data_1) ... new_data_10 <- rbind(cat_1_data_10,cat_2_data_10,cat_3_data_10,cat_4_data_10)

但我想随机挑选数据集,例如:

new_data_1 <- rbind(cat_1_data_[Random 1-10],cat_2_data_[Random 1-10]... and so on) ... new_data_10 <- rbind(cat_1_data_[Random 1-10],cat_2_data_[Random 1-10]...and so on)

有没有可能解决这个问题?其实我不知道如何解决这个问题:(

1 个答案:

答案 0 :(得分:2)

这是一个可行的抽样策略。

创建data.frame个列表,每个类别一个,随机播放:

dflist.cat1 <- sample(list(Cat_1_Data_1, Cat_1_Data_2, ...))
dflist.cat2 <- sample(list(Cat_2_Data_1, Cat_2_Data_2, ...))
...

lapply运行到rbind每个列表的相应元素。这将产生一个长度为10的列表:

dflist.new <- lapply(1:10, function(i){
                             rbind(dflist.cat1[[i]], 
                                   dflist.cat2[[i]],
                                   dflist.cat3[[i]],
                                   dflist.cat4[[i]])
                           })

您可以使用data.frame访问第一个dflist.new[[1]],依此类推。

我确信使用二维列表索引有一种更优雅的方法,但这适用于少数类别。