跨多列创建一个新的汇总变量if条件

  • 本文关键字:变量 条件 if 一个 创建 r
  • 更新时间 :
  • 英文 :


我有一个带有ID变量的数据帧和一组具有信息的类似名称的列

+-------------------------------------------------
|         ID   | C1   |    C2     |   C3    | ...
+-------------------------------------------------
|          1   | 99   |  101      |   102   | ...
+-------------------------------------------------

我需要计算满足特定条件的列的数量(例如<100(如果列的数量很小,我会做一些类似的事情

df %>% mutate (counter= case_when(C1 <100 & C2<100 & C3<100 ~ "3",
C1<100 & C2<100 ~ 2, ...)

但对于100+列,这显然不是一个选项。我也可以转向、总结和转回,但这似乎也不是最干净的解决方案。有什么想法可以正确地做到这一点吗?

我们可以在逻辑matrix(df[-1] < 100(上使用base R中的rowSums来获得每行中小于100的元素的计数。

df$counter <- rowSums(df[-1] < 100, na.rm = TRUE)

TRUE->1和CCD_ 6->0,因此,当我们取逻辑矩阵的行和时,每个TRUE将递增为1。


或在dplyr管道中

library(dplyr)
df %>%
mutate(counter = rowSums(across(-1) < 100, na.rm = TRUE))

最新更新