从一个数据帧指派随机行到R 2个中其他dataframes(Assigning random row

2019-10-22 06:53发布

我有一个数据帧(一)如下所述:

   V1 V2
1   a  b
2   a  e
3   a  f
4   b  c
5   b  e
6   b  f
7   c  d
8   c  g
9   c  h
10  d  g
11  d  h
12  e  f
13  f  g
14  g  h

现在我想是随机从上述数据帧(a)为该行2个其他空dataframes(b和c),使得没有行是重复的。 这意味着既不b的任何重复行也不c具有任何重复的行。 从现在,除了甚至跨越b和c中,没有行应该是相同的,即在B行不应存在在C的任何行,反之亦然。

一旦方法是不用更换采样选自(a)7种元素和分配给(b)和然后分配剩余的(c)中。 但是,在这种方法中,所有的元素将在同一时间被分配(B),然后至(c),但我想要的是元素分配一个接一个。 这是一个随机行(B),然后随机排至(c)然后再排随机的(b)...等等,直到数据帧中的所有行(一)完成。

谢谢

Answer 1:

采样所有的行号,然后划分根据行数指标的奇偶应该达到你所追求的数据帧。 这是一样的随机划分的原始数据帧行由行。

n <- nrow(df)
s <- sample.int(n, n)
odd.idxs <- seq_along(s) %% 2 != 0

s1 <- s[odd.idxs]
s2 <- s[-odd.idxs]

d1 <- df[s1, ]
d2 <- df[s2, ]


文章来源: Assigning random rows from a dataframe into 2 other dataframes in R
标签: r random