【发布时间】:2021-01-16 04:31:07
【问题描述】:
我正在使用 R 尝试在我的数据框中创建一个名为 df 的列,它将数据分成 20 个偶数组,新列 group 的每一行都有相应的组。我的有序数据示例如下所示:
preds ground_truth
65378 0.000002975379 0
27082 0.000004721652 0
26890 0.000006613435 1
130498 0.000007634303 0
173319 0.000007834359 0
20039 0.000009482496 0
64722 0.000009482496 0
53924 0.000009482496 0
165543 0.000009482496 0
我之前问过一个类似的问题,也有类似的答案,但是由于某种原因,这些解决方案不起作用。其他答案在这里:
Splitting a continuous variable into equal sized groups R divide data into groups
我的解决方案是这样使用 cut:
df$group <- cut(index(df), 20, labels = FALSE)
我希望这会将数据帧索引分成 20 个偶数组,因此在 129844 行中,每组将有 6492 个。但是,这只会产生一个单一的组,根本不会拆分数据。有人可以解释为什么 cut here 不起作用,其他数据帧在哪里?
任何我愿意提供的额外信息,
编辑: 我需要数据分组相对于 preds 是有序的,例如第一组将包含最高的 6492 值,第二组是次高的 6492,依此类推。
数据分组必须按照最高组的顺序排列 这是前 10 行的数据:
structure(list(preds = c(0.00000297537922317814,
0.00000472165221855588,
0.0000066134351160987, 0.00000763430272198875, 0.00000783435945631941,
0.00000948249581302744, 0.00000948249581314139, 0.00000948249581314247,
0.00000948249581314704, 0.0000094824958131879), ground_truth =
structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class =
"factor")), .Names = c("preds",
"ground_truth"), row.names = c("65378", "27082", "26890", "130498",
"173319", "20039", "64722", "53924", "165543", "168952"), class =
"data.frame")
【问题讨论】:
-
index函数从何而来? -
@jdobres 来自包装动物园
-
cut(as.numeric(rownames(df)), 20, labels=F)适合你吗? -
如果您可以分享一个可重现的示例(示例数据、代码和输出),这也会很有帮助。正如目前所写的那样,您的代码应该按预期工作,因此必须关闭其他内容。
-
@geds133
cut(as.numeric(rownames(dat)), 20, labels=F)适合我。