gpt4 book ai didi

r - 如何根据百分比划分数据集?

转载 作者:行者123 更新时间:2023-12-03 09:22:03 24 4
gpt4 key购买 nike

我有一个这样的数据集

ID      var value
9442000 a 2.01
9442000 v 2.2
9442000 h 5.3
9442000 f 0.2
9442000 s 0.55
9442000 t 0.6
952001 d 0.22
952001 g 0.44
952001 g 0.44
952001 h 0.77
652115 a 4.66
652115 d 1.55
652115 s 2.55
652115 s 2.55

我想将其分成两个数据帧,用于校准(75%)和验证(25%)。总的来说,这样做很容易,但我想在 ID 方面做到这一点。所以基本上,我想确保 75% 的EACH ID 用于校准。例如,对于 ID 9442000,我想将任意四个事件(随机)放入校准中,并将 2 个事件放入验证数据帧中。

预期输出:

*Calibration*
ID var value
9442000 a 2.01
9442000 v 2.2
9442000 h 5.3
9442000 f 0.2
952001 d 0.22
952001 g 0.44
952001 g 0.44
652115 a 4.66
652115 d 1.55
652115 s 2.55

还有

*validation*
ID var value
9442000 s 0.55
9442000 t 0.6
952001 h 0.77
652115 s 2.55

最佳答案

我以为你想要一个随机样本,而我原来的ave方法因片段太短而失败,所以我转向tapplyunlist-ed 结果

calib <- dat[ unlist( tapply(rownames(dat), dat$ID, 
FUN=function(x) sample(x, .75*length(x)))), ]
valid <- dat[ !rownames(dat) %in% rownames(calib) , ]
#---------------
> str(calib)
'data.frame': 10 obs. of 3 variables:
$ ID : int 652115 652115 652115 952001 952001 952001 9442000 9442000 9442000 9442000
$ var : Factor w/ 8 levels "a","d","f","g",..: 1 6 2 4 2 4 7 8 1 6
$ value: num 4.66 2.55 1.55 0.44 0.22 0.44 0.6 2.2 2.01 0.55
> str(valid)
'data.frame': 4 obs. of 3 variables:
$ ID : int 9442000 9442000 952001 652115
$ var : Factor w/ 8 levels "a","d","f","g",..: 5 3 5 6
$ value: num 5.3 0.2 0.77 2.55
>

关于r - 如何根据百分比划分数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28685626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com