通过使用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