我是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, ...))
...
运行
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]]
,依此类推。我敢肯定,使用二维列表索引可以做到这一点,但是这对于少数类别来说效果很好。
关于r - R-通过随机选择组成的数据帧来创建新的数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23383056/