使用plyr或其他包在数据帧内进行采样

jon*_*jon 1 r plyr dataframe

我想在每个级别的bvar中单独应用avar.

 mydf <- data.frame( avar = c("A", "B", "C", 4, 5, 6, 7, 8, 9, 10), 
 bvar = rep(1:2, each = 5))
 mydf
   avar bvar
1     A    1
2     B    1
3     C    1
4     4    1
5     5    1
6     6    2
7     7    2
8     8    2
9     9    2
10   10    2
Run Code Online (Sandbox Code Playgroud)

我试过plyr

   require(plyr) 
    daply ( mydf, .(avar), sample)
Run Code Online (Sandbox Code Playgroud)

结果糟糕.plyr替代品也欢迎

koh*_*ske 5

试试这个:

> daply(mydf, .(bvar), sample)
$`1`
  avar bvar
1    A    1
2    B    1
3    C    1
4    4    1
5    5    1

$`2`
   avar bvar
6     6    2
7     7    2
8     8    2
9     9    2
10   10    2
Run Code Online (Sandbox Code Playgroud)

要么

> daply(mydf, .(bvar), summarize, ans = sample(avar))
$`1`
  ans
1   A
2   C
3   4
4   B
5   5

$`2`
  ans
1  10
2   9
3   7
4   8
5   6
Run Code Online (Sandbox Code Playgroud)