gpt4 book ai didi

r - 如何将唯一值(例如递增的数字)分配给 R 中的重复列值?

转载 作者:行者123 更新时间:2023-12-05 04:26:49 26 4
gpt4 key购买 nike

我在解决以下问题时遇到了问题:

startend 在每隔一行重复一次。我想用一个唯一的数字来标记它们,每次达到新的开始值时该数字都会增加。

image showcasing the problem and desired ID

我还希望 obj 列为空且不在开始和结束之间的行在 ID 列中保持为空。

提前致谢!

最佳答案

可能有更精简的方法,但您可以使用具有某些逻辑的 cumsum()

library(dplyr)
library(tidyr)

x <- c("start", "end", NA)
df <- tibble(obj = x[c(1, 2, 1, 3, 2, 3, 3, 1, 3, 2, 1, 3, 2, 3, 3, 1, 3, 2)])

df %>%
mutate(ID = cumsum(replace_na(obj == "start", 0)),
ID = if_else(ID == cumsum(replace_na(obj == "end", 0)) & is.na(obj), NA_integer_, ID))
# A tibble: 18 x 2
obj ID
<chr> <int>
1 start 1
2 end 1
3 start 2
4 NA 2
5 end 2
6 NA NA
7 NA NA
8 start 3
9 NA 3
10 end 3
11 start 4
12 NA 4
13 end 4
14 NA NA
15 NA NA
16 start 5
17 NA 5
18 end 5

关于r - 如何将唯一值(例如递增的数字)分配给 R 中的重复列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72939029/

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