我创建了一个数据框来说明我的问题.我对R比较新.
#### permutation problem
a <- c("beagle", "beagle", "beagle", "basset", "basset")
b <- c(44, 33, 22, 34, 42)
c <- c(1:5)
d <- c(7:11)
dogframe <- data.frame(cbind(a,b,c,d))
output
> dogframe
a b c d
1 beagle 44 1 7
2 beagle 33 2 8
3 beagle 22 3 9
4 basset 34 4 10
5 basset 42 5 11
>
Run Code Online (Sandbox Code Playgroud)
我想要做的是按照列a中的因素随机改组b列.所以44,33和22的值将被改组为"beagle",34和42将被洗牌以用于basset.我希望结果是一个类似于原始数据的数据帧,只有列b中的混洗值.
谢谢.
像这样:
dogframe$b <- ave(dogframe$b, dogframe$a, FUN = sample)
Run Code Online (Sandbox Code Playgroud)
你也可以写:
dogframe$b <- with(dogframe, ave(b, a, FUN = sample))
Run Code Online (Sandbox Code Playgroud)