r - 在 R 中的 select 操作符中使用 %in%

标签 r select dplyr rowsum in-operator

我有一个数据集,我想计算每个参与者对某些列的参与率(非 NA 数/总列数)。实际数据集有许多我想忽略的列。

为此,假设我只想知道项目和分数列(5 列)中的参与率,忽略姓名和电子邮件列。此代码有效:

library(tidyverse)

data <- tibble(name = c("Corey", "Sibley", "Justin"),
               item_1 = c(1, 2, NA),
               item_2 = c(1, NA, NA),
               item_3 = c(2, NA, NA),
               item_4 = c(3, 2, NA),
               score = c(NA,NA, 1),
               email = c("on file", "on file", "on file"))

data %>%
  mutate(part_rate = rowSums(!is.na(select(., -c(name, email))))/5 * 100)

但是,在真实数据集中,不同的参与者有不同的分母(5),所以我想列出仅排除/包含一次的列。我尝试了这个,但它不起作用:


columns_to_exclude <- c("email", "name")

data %>%
  mutate(part_rate = rowSums(!is.na(select(., !%in% columns_to_exclude)))/5 * 100)

有什么方法可以在此选择中使用 in 运算符,这样我就可以避免多次复制和粘贴相同的列来排除?

谢谢!

最佳答案

我们可以在select中使用-

library(dplyr)
data %>% 
  mutate(part_rate = rowSums(!is.na(select(., -columns_to_exclude)))/5 * 100)

关于r - 在 R 中的 select 操作符中使用 %in%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62179979/

相关文章:

regex - R:替换数据框多列中的特殊字符

r - 如何在二维图上绘制 $\alpha$ 置信区域?

r - 基于具有很多条件的多列进行汇总

r - 如何 pivot_longer 一组多列?以及如何从那种长格式返回到原来的宽格式?

r - 为什么我不能计算稀疏矩阵 (dgCMatrix) 的叉积?

r - 我可以将屏幕上的绘图写入文件吗?

javascript - 显示<选择多个>中选定项目的计数

sql - 如何获取oracle sql中指定位置具有特定字符的记录

c# - 如何在有条件的一列中使用 LINQ select

R:查找顶部、中间和底部值以在 dplyr 中创建类别列