希望有人可以帮我解决这个问题:我试图弄清楚如何从data.frame中随机抽取一定百分比的行,这些行包含多个(因子)列,确保在结果data.frame中有至少一个级别每列存在。
这里有一些数据:
NoSchedule
随机抽样20%的原始数据。框架会产生这样的结果:
vs am gear carb
1: 0 1 4 4
2: 0 1 4 4
3: 1 1 4 1
4: 1 0 3 1
5: 0 0 3 2
6: 1 0 3 1
7: 0 0 3 4
8: 1 0 4 2
9: 1 0 4 2
10: 1 0 4 4
11: 1 0 4 4
12: 0 0 3 3
13: 0 0 3 3
14: 0 0 3 3
15: 0 0 3 4
16: 0 0 3 4
17: 0 0 3 4
18: 1 1 4 1
19: 1 1 4 2
20: 1 1 4 1
21: 1 0 3 1
22: 0 0 3 2
23: 0 0 3 2
24: 0 0 3 4
25: 0 0 3 2
26: 1 1 4 1
27: 0 1 5 2
28: 1 1 5 2
29: 0 1 5 4
30: 0 1 5 6
31: 0 1 5 8
32: 1 1 4 2
在每一栏中,每个级别的因子仍然存在。
功能"分层"来自图书馆" splitstackshape" /" fifer" (看起来像是相同的功能)。也是评论中建议的解决方案
vs am gear carb
1: 0 1 4 4
2: 1 1 2 1
3: 0 0 3 2
4: 0 0 4 3
5: 0 1 5 6
6: 0 1 5 8
仍然没有从因子碳水化合物中返回所有级别:
DT <- as.data.table(mtcars)
DT <- DT[, lapply(.SD, as.factor), .SDcols = c("vs", "am", "gear", "carb")]
SFDT <-
stratified(
DT,
c("vs", "am", "gear", "carb"),
select = list(
vs = levels(test$vs),
am = levels(test$am),
gear = levels(test$gear),
carb = levels(test$carb)
),
size = .5
)