【问题标题】:How to Index subjects using R [duplicate]如何使用 R 索引主题 [重复]
【发布时间】:2015-03-03 20:46:00
【问题描述】:

我在 R 中工作,我有一个数据集,每个主题都有多个条目。我想创建一个按主题索引的索引变量。例如:

    Subject Index
1       A     1
2       A     2
3       B     1
4       C     1
5       C     2
6       C     3
7       D     1
8       D     2
9       E     1

第一个 A 条目被索引为 1,而第二个 A 条目被索引为 2。第一个 B 条目被索引为 1,等等。

任何帮助都会很棒!

【问题讨论】:

    标签: r indexing


    【解决方案1】:

    这是一个快速的data.table 方法

    library(data.table)
    setDT(df)[, Index := seq_len(.N), by = Subject][]
    #    Subject Index
    # 1:       A     1
    # 2:       A     2
    # 3:       B     1
    # 4:       C     1
    # 5:       C     2
    # 6:       C     3
    # 7:       D     1
    # 8:       D     2
    # 9:       E     1
    

    或以 R 为基数

    with(df, ave(as.numeric(Subject), Subject, FUN = seq_along))
    ## [1] 1 2 1 1 2 3 1 2 1
    

    或者使用 dplyr(不要在 data.table 类上运行它)

    library(dplyr)
    df %>%
      group_by(Subject) %>%
      mutate(Index = row_number())
    

    【讨论】:

      【解决方案2】:

      使用dplyr

      library(dplyr)
      df %>% group_by(Subject) %>% mutate(Index = 1:n())
      

      你得到:

      #Source: local data frame [9 x 2]
      #Groups: Subject
      #
      #  Subject Index
      #1       A     1
      #2       A     2
      #3       B     1
      #4       C     1
      #5       C     2
      #6       C     3
      #7       D     1
      #8       D     2
      #9       E     1
      

      【讨论】:

        猜你喜欢
        • 2014-04-18
        • 1970-01-01
        • 1970-01-01
        • 2021-10-31
        • 2016-06-26
        • 2017-09-24
        • 2016-02-06
        • 2017-12-31
        相关资源
        最近更新 更多