当statemet检查R中的条件时,如何在case_中指定列的范围?

当statemet检查R中的条件时,如何在case_中指定列的范围?,r,dplyr,R,Dplyr,考虑到不稳定因素- library(tidyverse) df <- mtcars %>% as_tibble() %>% slice(1:5) df # A tibble: 32 x 11 mpg cyl disp hp drat wt qsec vs am gear carb <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>

考虑到不稳定因素-

library(tidyverse)
df <- mtcars %>% as_tibble() %>% slice(1:5)
df

# A tibble: 32 x 11
     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
 2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
 3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
 4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
 5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
库(tidyverse)
df%作为可存储()%>%切片(1:5)
df
#一个tibble:32x11
mpg气缸显示hp drat wt qsec与am齿轮carb
1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2

我知道您可以使用类似
df%>%select(c(mpg:vs))
的方法来选择一系列列,而无需在
select
语句中键入所有列名。当语句时,如何在
案例中执行类似操作。我有一个大约有35列的数据集,希望标记所有列都等于0的行。

我们可以在
选择中使用
where
条件

df %>%
   select(where(~ all(. %in% c(0, 1))))
-输出

# A tibble: 5 x 2
     vs    am
  <dbl> <dbl>
1     0     1
2     0     1
3     1     1
4     1     0
5     0     0

我不确定我们是否可以在
处理此问题时使用
case\u,但我们可以使用以下解决方案:

library(dplyr)

df %>%
  rowwise() %>%
  mutate(flag = +(all(c_across(where(is.numeric)) == 0)))

# A tibble: 5 x 12
# Rowwise: 
    mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb  flag
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
1  21       6   160   110  3.9   2.62  16.5     0     1     4     4     0
2  21       6   160   110  3.9   2.88  17.0     0     1     4     4     0
3  22.8     4   108    93  3.85  2.32  18.6     1     1     4     1     0
4  21.4     6   258   110  3.08  3.22  19.4     1     0     3     1     0
5  18.7     8   360   175  3.15  3.44  17.0     0     0     3     2     0
库(dplyr)
df%>%
行()
mutate(flag=+(all(c_-overs)(其中(is.numeric))==0)))
#一个tibble:5x12
#顺时针:
mpg cyl disp hp drat wt qsec vs am齿轮carb标志
1  21       6   160   110  3.9   2.62  16.5     0     1     4     4     0
2  21       6   160   110  3.9   2.88  17.0     0     1     4     4     0
3  22.8     4   108    93  3.85  2.32  18.6     1     1     4     1     0
4  21.4     6   258   110  3.08  3.22  19.4     1     0     3     1     0
5  18.7     8   360   175  3.15  3.44  17.0     0     0     3     2     0

不完全清楚您想要的是什么样的结果。是要选择的列还是其他什么。请注意,
case_当
需要一个向量,即一个列而不是多个列
library(dplyr)

df %>%
  rowwise() %>%
  mutate(flag = +(all(c_across(where(is.numeric)) == 0)))

# A tibble: 5 x 12
# Rowwise: 
    mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb  flag
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>
1  21       6   160   110  3.9   2.62  16.5     0     1     4     4     0
2  21       6   160   110  3.9   2.88  17.0     0     1     4     4     0
3  22.8     4   108    93  3.85  2.32  18.6     1     1     4     1     0
4  21.4     6   258   110  3.08  3.22  19.4     1     0     3     1     0
5  18.7     8   360   175  3.15  3.44  17.0     0     0     3     2     0