【发布时间】:2020-08-06 21:25:00
【问题描述】:
我有一个包含大约 500K 元素的字符串向量,我想为每个元素分配一个值以显示每个元素的组号。
分组标准如下:
- 从列表顶部开始连续分配组号
- 应为每个元素分配不同的组,除非至少有 3 个连续元素按字母升序排列,其中这些连续元素将属于一个组。
我如何在 R 中做到这一点?
例如和预期的输出:
> my_strings <- c("xx1", "1xxx", "abc.xyz", "a", "ad022", "ghj1", "kf1", "991r",
+ "jdd", "12vd", "r34o", "z", "034mh")
> expected_output <- c(1, 2, 3, 4, 4, 4, 4, 5, 6, 7, 7, 7, 8)
> (df <- data.frame(input = my_strings, output = expected_output))
input output
1 xx1 1
2 1xxx 2
3 abc.xyz 3
4 a 4
5 ad022 4
6 ghj1 4
7 kf1 4
8 991r 5
9 jdd 6
10 12vd 7
11 r34o 7
12 z 7
13 034mh 8
到目前为止,我尝试使用dplyr::lead 并根据两个连续元素分配顺序。我不知道如何从这里开始。
res <- as_tibble(my_strings) %>%
mutate(after = lead(my_strings))
res$pre_group = apply(res, 1, function(x) order(c(x[1], x[2]))[2])
【问题讨论】: