我有一个数据框如下:
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/