【问题标题】:indexing sub groups in a dataframe [duplicate]在数据框中索引子组[重复]
【发布时间】:2015-06-19 09:08:38
【问题描述】:

我正在寻找一种智能方法来索引数据框中的子类别。
我在下面创建了一个非常简单的可重现示例。您将如何编码以下步骤以从输入到输出(即我们如何编码创建 color_id 变量)?

非常感谢您对此的看法!

input <- data.frame(label = c("red", "red", "blue", "green", "green", "green", "orange"), count = c(2, 2, 1, 3, 3 ,3, 1))

output <- data.frame(label = c("red", "red", "blue", "green", "green", "green", "orange"), count = c(2, 2, 1, 3, 3 ,3, 1), color_id = c(1, 2, 1, 1, 2, 3, 1))

最好的问候

【问题讨论】:

  • 我目前找不到合适的骗子。在基础 R 中,您可以使用 ?ave,例如:within(input, color_id &lt;- ave(seq_along(label), label, FUN = seq_along)),但还有许多其他方法可以做到这一点。在 dplyr:input %&gt;% group_by(label) %&gt;% mutate(color_id = row_number())
  • @DavidArenburg 这是我使用的一个特例,但你链接的答案确实直接回答了这个问题。我该如何切换欺骗?
  • 我认为splitstackshape 有一个getanid 功能。

标签: r dplyr


【解决方案1】:

使用数据表:

library(data.table)
setDT(input)[ , color_id := seq_len(.N), by = label]
    label count color_id
1:    red     2        1
2:    red     2        2
3:   blue     1        1
4:  green     3        1
5:  green     3        2
6:  green     3        3
7: orange     1        1

【讨论】:

    【解决方案2】:
    library(splitstackshape)
    getanID(input, 'label')
    

    【讨论】:

    • 它在包作者自己提供的欺骗链接中。无需继续喂养帮助吸血鬼。
    猜你喜欢
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 2016-04-20
    • 2018-08-24
    • 2019-02-16
    • 2017-09-13
    • 2015-09-08
    相关资源
    最近更新 更多