【问题标题】:In R, assign numeric variable according to segments of another variable? [duplicate]在R中,根据另一个变量的段分配数字变量? [复制]
【发布时间】:2021-01-20 22:18:46
【问题描述】:

一些简单的示例数据:

test <- c(rep('B', 10), rep('A', 7), rep('C', 10), rep('A', 3))

#1] “B” “B” “B” “B” “B” “B” “B” “B” “B” “B” “A” “A” “A” “A” “A” ""A""A""C""C""C""C""C""C""C""C""C""C""A""A""A"

我想给它分配一个数字变量,其中“B”的第一个块得到 1,“A”的第一个块得到 2,“C”的第一个块得到 3,下一个'A' 块得到 4。我试过了:

test <- factor(test, levels = unique(test))
as.integer(test)

但这会将“A”的第二个块分配为 2。我怎样才能让它为每个块分配唯一的连续编号?实际数据是药物组合,我需要分配的数字变量以 1 开头

【问题讨论】:

  • cumsum(c(1, test[-length(test)] != test[-1]))

标签: r type-conversion factors


【解决方案1】:

我猜你需要rle

> with(rle(test), rep(seq_along(lengths), lengths))
 [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4

【讨论】:

  • 完美。谢谢你。我看到了rle,但我没有正确使用它,所以我继续前进
  • 还有data.table::rleid(test)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 2019-11-23
相关资源
最近更新 更多