将两个数据帧中的一个数据帧与原始内容的70%和30%分开

时间:2017-04-12 10:36:54

标签: r

我想使用R将一个数据帧分成两个。例如,一个数据帧占原始内容的70%,另一个占30%。我怎么能这样做?我的数据框大小(22740,2)。

我的数据框包含一列含有基因,另一列含有它所属的途径。我希望在数据帧的每个路径中保持70-30关系。因此,我没有兴趣获取前70%的行并做一个新的数据帧。

希望我能清楚地解释自己。

2 个答案:

答案 0 :(得分:1)

使用dplyrdf2为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)