我是R初学者,我有一个小问题。我想通过随机选择组成的数据帧来创建新的数据帧。

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

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

Cat_1_Data_1 Cat_2_Data_1 Cat_3_Data_1 Cat_4_Data_1Cat_1_Data_2 Cat_2_Data_2 Cat_3_Data_2 Cat_4_Data_2Cat_1_Data_3 Cat_2_Data_3 Cat_3_Data_3 Cat_4_Data_3Cat_1_Data_4 Cat_2_Data_4 Cat_3_Data_4 Cat_4_Data_4Cat_1_Data_5 Cat_2_Data_5 Cat_3_Data_5 Cat_4_Data_5Cat_1_Data_6 Cat_2_Data_6 Cat_3_Data_6 Cat_4_Data_6Cat_1_Data_7 Cat_2_Data_7 Cat_3_Data_7 Cat_4_Data_7Cat_1_Data_8 Cat_2_Data_8 Cat_3_Data_8 Cat_4_Data_8Cat_1_Data_9 Cat_2_Data_9 Cat_3_Data_9 Cat_4_Data_9Cat_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)

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

最佳答案

这是一种可行的采样策略。

创建您的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, ...))
...


运行lapplyrbind每个列表的相应元素。这将导致长度为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]],依此类推。

我敢肯定,使用二维列表索引可以做到这一点,但是这对于少数类别来说效果很好。

关于r - R-通过随机选择组成的数据帧来创建新的数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23383056/

10-11 00:58
查看更多