【问题标题】:Populate occurrence value of variable in R [duplicate]在R中填充变量的出现值[重复]
【发布时间】:2016-04-28 21:11:15
【问题描述】:

我有一个数据集,需要创建一个新变量,该变量将填充排序数据集中每个变量按行出现的值,如下所示。

VAR1    VAR2 (to be created)
C1      1
C1      2
C1      3
C2      1
C3      1
C3      2
C4      1
C5      1

提前感谢您的帮助。

【问题讨论】:

    标签: r data-manipulation


    【解决方案1】:
    unlist(sapply(rle(as.character(df$VAR1))$lengths,seq))
    #[1] 1 2 3 1 1 2 1 1
    

    【讨论】:

    • 我收到错误“rle(dumdt$Client_ID) 中的错误:'x' 必须是原子类型的向量”。你能指出我可能做错了什么吗?
    • 道歉。让它工作。需要转换为字符列表。非常感谢。
    【解决方案2】:

    这是另一个使用 rlesequence 的选项

    with(df1, sequence(rle(VAR1)$lengths))
    #[1] 1 2 3 1 1 2 1 1
    

    ave

    with(df1, ave(seq_along(VAR1), 
            cumsum(c(TRUE, VAR1[-1]!= VAR1[-length(VAR1)])), FUN = seq_along))
    #[1] 1 2 3 1 1 2 1 1
    

    或者使用来自data.tablerleid

    library(data.table)
    setDT(df1)[, VAR2 := seq_len(.N) , by = rleid(VAR1)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      相关资源
      最近更新 更多