通过使用dplyr对列中的术语进行灰显分组

通过使用dplyr对列中的术语进行灰显分组,r,regex,dplyr,R,Regex,Dplyr,我有一个数据框,如下所示: Symptom number Abdominal pain\n Swallowing probs\n Back issues\n 22 Abdominal pain\n 12 Back issues \n Vomiting \n

我有一个数据框,如下所示:

Symptom                                          number        

Abdominal pain\n Swallowing probs\n Back issues\n       22
Abdominal pain\n                                        12
Back issues \n Vomiting \n                                 14
Back issues\n                                            5
在每个症状短语的末尾总是有一个
\n
。症状短语本身可以是任何词,因此我不想专门搜索这些词,而是搜索
\n

我想平均每个症状的
,以得出以下结果:

Symptom                       Avg
Abdominal pain                 17
Swallowing probs               22
Back issues                    20.5
Vomiting                       14
我不知道如何使用dplyr按单个术语进行分组。我试过了

SypmAvg<- df %>% group_by(grepl("(?\\n.*\\n)|($.*?\\n)",df$Symptom)%>% summarise(mean=mean(number)
SypmAvg%分组依据(grepl((?\\n.*\\n)|($.*?\\n)”,df$症状)%>%总结(平均值=平均值(数字)

但是它只是使我的计算机崩溃,所以我甚至看不到错误。有人能帮忙吗?这只是一个正则表达式问题还是有更好的方法来解决这个问题?

我们可以使用
cSplit

library(splitstackshape)
cSplit(df, "Symptom", "\\n", "long")[, .(Avg = mean(number)), .(Symptom)]

谢谢。有没有可能只是在下半部分做了平均值。我的数字似乎没有加起来。我想这是因为NA的原因。我想我只需要把NA.rm放进去=T@SebastianZeki过期问题的编号不匹配…您的编号正确吗?
library(dplyr)
df1 = df %>% group_by(id) %>% mutate(new_col = strsplit(Symptom, "\n")) %>% unnest()

df1 %>% group_by(trimws(new_col)) %>% summarise( ans = mean(number))

# new_col   ans
# 1   Abdominal pain 17.00000
# 2      Back issues 13.66667
# 3 Swallowing probs 22.00000
# 4         Vomiting 14.00000