gpt4 book ai didi

r - 识别字符串中的第一个匹配位置

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

我有一个字符串(“00010000”),需要确定我们看到第一个“1”的位置。 (这告诉我客户是活跃的月份)

我有一个看起来像这样的数据集:

id  <- c(1:5)
seq <- c("00010000","00001000","01000000","10000000","00010000")
df <- data.frame(id,seq)

我想创建一个新字段来标识每个 id 的 first_month_active。

我可以使用嵌套的 ifelse 函数手动执行此操作:
    df$first_month_active <-
ifelse(substr(df$seq,1,1)=="1",1,
ifelse(substr(df$seq,2,2)=="1",2,
ifelse(substr(df$seq,3,3)=="1",3,
ifelse(substr(df$seq,4,4)=="1",4,
ifelse(substr(df$seq,5,5)=="1",5,99 )))))

这给了我想要的结果:
  id  seq        first_position
1 00010000 4
2 00001000 5
3 01000000 2
4 10000000 1
5 00010000 4

但是,对于我的数据(包含 36 个月)来说,这不是理想的解决方案。

我想使用带有 ifelse 语句的循环,但是我真的在语法上苦苦挣扎
for (i in 1:36) {
ifelse(substr(df$seq,0+i,0+i)=="1",0+i,
}

任何想法将不胜感激

最佳答案

或者试试 stringi包裹

library(stringi)
stri_locate_first_fixed(df$seq, "1")[, 1]
## [1] 4 5 2 1 4

关于r - 识别字符串中的第一个匹配位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29123156/

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