繁体   English   中英

dplyr 包含特定值的列的条件总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM