r - 通过使用 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                                 14
Back issues\n                                            5

每个症状短语的末尾总是有一个 \n。症状短语本身可以是任何字面意思,所以我不想专门搜索这些术语,而是搜索 \n

之前(或之间)的任何术语

我想对每个症状的 number 进行平均,以便我最终得到:

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)

但它只会让我的电脑崩溃,所以我什至看不到错误。谁能帮忙?这只是一个正则表达式问题还是有更好的方法来做到这一点?

最佳答案

我们可以使用cSplit

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

关于r - 通过使用 dplyr 在列中查找术语来分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41503651/

相关文章:

R:箱线图 - 如何向下移动 x 轴标签?

r - agrep 的问题

jquery - 用 jquery 替换反斜杠

php - 将外来字符更改为对应的罗马字符

r - 计算每组的值并将其作为键值对附加到 R 中的现有列中

r - 使用 dplyr 对两列数据框中的对象进行分类

r - 考虑到第一个数据框中的一个变量是另一个数据框中不同值的汇总总和,如何计算百分比

rstudent() 到 nnet 对象

regex - Vue.js - 元素 UI - 表单验证正则表达式

r - 根据列名称的共性进行变异