gpt4 book ai didi

r - 根据模式按组分配唯一 ID

转载 作者:行者123 更新时间:2023-12-02 09:17:15 25 4
gpt4 key购买 nike

我有一个分组数据集,但这些组没有唯一标识符,如下所示:

direction <- c('N','S','W','N','N','S','W','N','S','W')
measurement <- c(4,6,1,7,2,4,7,4,1,4)
x <- data.frame(direction, measurement)
x
direction measurement
1 N 4
2 S 6
3 W 1
4 N 7
5 N 2
6 S 4
7 W 7
8 N 4
9 S 1
10 W 4

x中,direction的值是按顺序排列的,每个重复的“N”、“S”和“W”集合是一个组。

方向的每组值始终以“N”开头,但是,并非所有组都具有完整的“N”、“S”和“W”行集(请参阅ID B 下面)。

另一种表达方式:我想为每组最多 3 行提供一个唯一的 ID,从 direction == 'N' 开始。

想要的结果是这样的:

    direction measurement ID
1 N 4 A
2 S 6 A
3 W 1 A
4 N 7 B
5 N 2 C
6 S 4 C
7 W 7 C
8 N 4 D
9 S 1 D
10 W 4 D

请注意,ID B 仅包含一行“N”。

最佳答案

您可以使用 == 来识别带有“N”的元素并使用 cumsum 来构造索引,从而获得此结果。然后按照 balter 答案中的建议从存储的向量 LETTERS 中提取值。

这里,cumsum 对逻辑向量求和,将其强制转换为数字二进制(1 和 0)。因此,它会重复相同的值,并在遇到“N”时递增。

 x$ID <- LETTERS[cumsum(x$direction == "N")]

这会返回

x
direction measurement ID
1 N 4 A
2 S 6 A
3 W 1 A
4 N 7 B
5 N 2 C
6 S 4 C
7 W 7 C
8 N 4 D
9 S 1 D
10 W 4 D

关于r - 根据模式按组分配唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45741084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com