我是一个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)
有没有可能解决这个问题?其实我不知道如何解决这个问题:(
答案 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]]
,依此类推。
我确信使用二维列表索引有一种更优雅的方法,但这适用于少数类别。