使用regex查找上一个句点左右的值,并在dplyr中分开
我有一个列名称如下的数据框:使用regex查找上一个句点左右的值,并在dplyr中分开,r,dplyr,regex-lookarounds,R,Dplyr,Regex Lookarounds,我有一个列名称如下的数据框: [127] "quiz.32.player.submitted_answer_private" "quiz.32.player.rescue_event" [129] "quiz.33.player.solution" "quiz.33.player.submitted_answer" [131] "quiz.33.player.s
[127] "quiz.32.player.submitted_answer_private" "quiz.32.player.rescue_event"
[129] "quiz.33.player.solution" "quiz.33.player.submitted_answer"
[131] "quiz.33.player.submitted_answer_private" "quiz.33.player.rescue_event"
[133] "partner_quiz.1.player.solution" "partner_quiz.1.player.submitted_answer"
[135] "partner_quiz.1.player.submitted_answer_private" "partner_quiz.1.player.rescue_event"
[137] "partner_quiz.2.player.solution" "partner_quiz.2.player.submitted_answer"
[139] "partner_quiz.2.player.submitted_answer_private" "partner_quiz.2.player.rescue_event"
我试图通过提取最后一个周期右边的值和左边的值来分离这些值。我的dplyr管道如下所示:
frame <- data %>%
gather(k, value) %>%
separate(k, into = c("quiz_number", "suffix"), sep = "\\.(?=player)")
帧%
聚集(k,值)%>%
分开(k,分为=c(“测验编号”,“后缀”),sep=“\\.(?=player)”)
出于某种原因,结果data.frame会忽略所有前缀为“partner”的列。你知道为什么吗
编辑:结果分割应在列测验编号中包含上一期间左侧的所有内容(例如。
quick.32.player
和partner\u quick.2.player
)以及在“后缀”列中,最后一个句点右侧的所有内容(例如提交的答案\u private
和解决方案
)在regex lookaround中不使用“player”,而是对不属于/code>的字符进行正匹配,直到结束字符串的($
)
library(dplyr)
library(tidyr)
data %>%
gather(k, value) %>%
separate(k, into = c("quiz_number", "suffix"), sep = "\\.(?=[^.]+$)")
在OP的代码中,它在“player”字符串前匹配
,但在“player”字符串后有
s,例如quick.32.player.rescue\u event
你在42秒内回答了这个问题。你应该获得奖励。你知道我的正则表达式有什么问题吗?