【问题标题】:dplyr: Generate row number/row position in group_by [duplicate]dplyr:在 group_by 中生成行号/行位置 [重复]
【发布时间】:2016-08-21 23:53:09
【问题描述】:

我有一个数据集,我想按组生成行位置。例如

library(data.table)

data<-data.table(Position=c(1,2,3,4,5,6,7,8,9,10),
Category=c("M","M","M","M","F","F","F","M","M","F"))

我按类别分组,并希望按组创建作为行位置的列。类似下面或 data.table 的东西

dataByGroup %>% group_by(Category) %>% mutate(positionInCategory = 1:nrow(Category))

无法弄清楚如何实现这一目标?

期望的输出:

| Position|Category | positionInCategory|
|--------:|:--------|------------------:|
|        1|M        |                  1|
|        2|M        |                  2|
|        3|M        |                  3|
|        4|M        |                  4|
|        5|F        |                  1|
|        6|F        |                  2|
|        7|F        |                  3|
|        8|M        |                  5|
|        9|M        |                  6|
|       10|F        |                  4|

【问题讨论】:

标签: r data.table dplyr


【解决方案1】:

尝试以下方法:

library(data.table)
library(dplyr)

data<-data.table(Position=c(1,2,3,4,5,6,7,8,9,10),
                 Category=c("M","M","M","M","F","F","F","M","M","F"))

cleanData <- data %>%
  group_by(Category) %>%
  mutate(positionInCategory = 1:n())

【讨论】:

    【解决方案2】:

    试试

    data[, new := rowid(Category)]
    # or, if you're using 1.9.6 or older
    data[, new := 1:.N, by=Category]
    
        Position Category new
     1:        1        M   1
     2:        2        M   2
     3:        3        M   3
     4:        4        M   4
     5:        5        F   1
     6:        6        F   2
     7:        7        F   3
     8:        8        M   5
     9:        9        M   6
    10:       10        F   4
    

    要使用rowid,您目前需要unstable/devel version of the package

    【讨论】:

    • 自 1.9.7 以来不是 rowid 吗?
    • @Michael D'oh。谢谢。你认为我不应该根据开发版本发布答案吗?
    • 不,没关系,只要确保包含安装说明的警告和参考即可。
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 2016-12-03
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    相关资源
    最近更新 更多