在R中解析文件:跟踪事件随着时间的推移没有时间戳

时间:2017-02-22 20:27:51

标签: r regex parsing text-parsing

我有一个txt文件,我在R中解析它以获取一些统计信息。它看起来像这样:

**New Session**
Event A
Event B
Event B
Event C
Event A
Event C
...
**New Session**
...
**New Session**
...

我需要做的是在发生某些事件时跟踪它们。我想收到这样一张桌子:

Event A | Session 1
Event A | Session 1
Event A | Session 2
Event A | Session 3

我对解析没有任何问题,但我不知道如何将各个事件连接到它们发生的会话。我没有时间戳可以使用。

一种方法可能是在包含一个会话的单个文本文件中剪切文件。但是我打赌有一种方法可以在解析特定事件时对会话进行计数?

如果我不得不将其剪掉:如何让R解析某个字符串的所有文件?

1 个答案:

答案 0 :(得分:1)

我不确定R是否支持断言和内联修饰符 将假设它为此目的。

您可以将会话与一系列事件相关联,但您无法完成所有事件 立刻。

您需要一般的正则表达式来捕获每个会话以及与之相关的所有事件 那个会话。
这是(?ms)^(\*\*New[ ]Session\*\*)((?:(?!^\1).)*),您可以在全球范围内运行它 在一个循环中。

 (?ms)                         # Modifiers:  multi-line and dot-all
 ^                             # Beginning of line
 ( \*\*New [ ] Session\*\* )   # (1), The sessions info, specify
 (                             # (2 start), All the Events
      (?:
           (?! ^ \1 )                    # Assert, not a new session
           . 
      )*
 )                             # (2 end)

在每场比赛中,第1组是会话,第2组是 ALL 事件 将会话存储在一个结构中,然后解析所有个体的组2 您可以添加到结构的事件。

继续进行,直到整个文件被解析 这就是它的全部内容。

如果您需要将所有会话与事件相关联 哈希最适合。

就像我说的那样,我不知道R,但即使你只有名单,也可以做到。

对于散列,在每次匹配时,解析事件,然后将会话附加到
事件哈希键的值数组。