我想使用R将一个数据帧分成两个。例如,一个数据帧占原始内容的70%,另一个占30%。我怎么能这样做?我的数据框大小(22740,2)。
我的数据框包含一列含有基因,另一列含有它所属的途径。我希望在数据帧的每个路径中保持70-30关系。因此,我没有兴趣获取前70%的行并做一个新的数据帧。
希望我能清楚地解释自己。答案 0 :(得分:1)
使用dplyr
,df2
为70%,df3
是30% - ref
是为了对条目编制索引而创建的。 group_by
确保每个途径都是单独采样的。
library(dplyr)
df2 <- df %>% mutate(ref=seq_len(nrow(df))) %>% group_by(pathway) %>% sample_frac(0.7)
df3 <- df[-df2$ref,]
答案 1 :(得分:0)
如果您想随机选择30%的样本,您可以这样做:
# Select a 30% of the samples
Sel.ID <- sample(1:22740,size = .3*22740,replace=F)
# The new table with the 30% of the samples would be . . .
New.Tab.30 <- Tab[Sel.ID,]
# The table with the 70% of the samples (the remaining) would be . . .
New.Tab.70 <- Tab[-Sel.ID,]
您可以运行不同的时间,获得不同的表格。如果你想保持不变,你应该在第一行之前使用set.seed(12345)
。