gpt4 book ai didi

r - 计算子字符串中字符串的下一次出现次数

转载 作者:行者123 更新时间:2023-12-04 10:53:20 25 4
gpt4 key购买 nike

今天,我遇到了一个问题,尽管我在寻找解决方案,但我自己无法解决 - 在我看来,要么我的方法是错误的,要么之前没有人问过类似的问题。

我正在研究马尔可夫归因,所以我得到了带有如下字符串的列:

A > B > B > C > B > A > C > B > A

等等

...它是基于 postgresql 函数“string_agg”创建的。

我认为对我来说重要的是分配每个字符串在整个字符串中出现的次数。说清楚一点,最终,它看起来像这样:

A1 > B1 > B2 > C1 > B3 > A2 > C2 > B4 > A3

存在三个主要挑战:

  • 大约有 100 种不同类型的元素需要计算,这些元素可能会改变时间,因此很难对其进行硬编码,
  • 数据集大约有 20 万行,
  • 字符串最长可达数百个字符

我想到的唯一一件事就是编写某种循环,但感觉它需要很长时间才能完成。

我也考虑过在 postgresql 级别上解决它,但也找不到有效且简单的解决方案。

最佳答案

这是一个使用data.table的粗略示例:

library(data.table)

# Example data:
data <- data.table(
s = c("A > B > B > C > B > A > C > B > A",
"A > B > B > C > B > A > C > B > C > D")
)

# Processing steps (can probably be shortened)
n <- strsplit(data[["s"]], " > ")
datal <- melt(n)
setDT(datal)
datal[, original_order := 1:.N
][, temp := paste0(value, 1:.N), by = .(L1, value)
][order(original_order), paste(temp, collapse = " > "), by = L1]


# Output:
L1 V1
1: 1 A1 > B1 > B2 > C1 > B3 > A2 > C2 > B4 > A3
2: 2 A1 > B1 > B2 > C1 > B3 > A2 > C2 > B4 > C3 > D1

关于r - 计算子字符串中字符串的下一次出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280116/

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