我有一个看起来像这样的表:
ID term value
1 A cat,dog,snake 10
2 B cat,eel 50
3 C fish,eel 3
4 D fish,dog 6
data.frame(ID = c("A", "B", "C", "D"),
term = c("cat,dog,snake", "cat,eel", "fish,eel", "fish,dog"),
value = c(10, 50, 3, 6))
我有一个感兴趣的列表:
dog
fish
eel
我想要做的是为列表中的每个项目搜索每一行并计算平均值(值列)。像这样:
term mean
1 dog 8.0
2 fish 4.5
3 eel 26.5
在每个有 'dog'
的实例中,它都会计算 value
的 mean
。
这样的东西是行不通的:
df %>%
group_by(., grepl(list, term)) %>%
summarise(mean = mean(value))
我不想做的是将每个术语分开到它自己的行中,因为术语的某些行有 100 多个选项。所以我能想到的唯一有效方法是通过 grep 搜索进行分组。虽然也许我错了......
最佳答案
也许是这样的?
mylist <- c("dog", "fish", "eel")
pattern <- paste0(mylist, collapse = "|")
df %>%
separate_rows(term) %>%
group_by(term = str_extract(term, pattern)) %>%
summarise(mean = mean(value, na.rm = TRUE)) %>%
na.omit()
或
library(dplyr)
mylist <- c("dog", "fish", "eel")
df %>%
separate_rows(term) %>%
group_by(term) %>%
summarise(mean = mean(value, na.rm = TRUE)) %>%
filter(term %in% mylist)
term mean
<chr> <dbl>
1 dog 8
2 eel 26.5
3 fish 4.5
https://stackoverflow.com/questions/69697448/
相关文章:
spring-boot - 应用程序通过 Spring Boot Run 而不是通过 Intelli
typescript - 如何从Nuxt 3服务器获取路由参数
r - 在 download.file 中关闭 SSL 验证
html - 是否可以使用纯 CSS 为仅包含一个元素的列表设置样式,而不是为包含多个元素的列表设置
typescript - 类型错误 : EventEmitter is not a construc
java - org.gradle.api.internal.tasks.testing.TestS