[英]dplyr conditional sum of columns containing specific value
我遇到了改变包含特定值的特定列的条件计算的问题。 我要编码的算法是:如果condition1 = x,计算标题中带有“bbb”的列中包含“a”的列数,如果condition1 = y,计算列中包含“c”的列数标题中带有“ddd”。 例如,我给出以下内容:
require("tidyverse")
iris %>%
mutate_all(as.character) %>%
select(Species, everything()) %>%
rowwise() %>%
mutate(cat1=case_when(Species=="virginica"~sum(select(., contains("sepal"), endsWith("5"))),
Species=="versicolor"~sum(select(., contains("sepal"), startsWith("6"))),
TRUE~"not tested"))
你能给我你的建议吗? 谢谢大家。
c_across()
函数将为您提供所需的内容。 我还更改了case_when()
中的最后一个 case 以返回一个整数,因为其他的都是整数,并且它们都必须是相同的类型。
iris %>%
mutate_all(as.character) %>%
select(Species, everything()) %>%
rowwise() %>%
mutate(cat1 = case_when(
Species == "virginica" ~ sum(endsWith(c_across(contains("sepal")), "5")),
Species == "versicolor" ~ sum(endsWith(c_across(contains("sepal")), "6")),
TRUE ~ NA_integer_)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.