我有一个带有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))