是否有任何逻辑可以确定一行中是否至少有一个true

是否有任何逻辑可以确定一行中是否至少有一个true,r,R,是否有任何逻辑可以确定一行中是否至少有一个true EmployeeID <- c(101,102,103,104,105,106,107,108,109) Created <- c("2020-06-19","2020-06-20","2020-06-21","2020-06-24","2020-06-25", "2020-06-28",

是否有任何逻辑可以确定一行中是否至少有一个true

EmployeeID <- c(101,102,103,104,105,106,107,108,109)
Created <- c("2020-06-19","2020-06-20","2020-06-21","2020-06-24","2020-06-25",
             "2020-06-28","2020-06-28","2020-06-23","2020-06-24")
happy <- c("True", "false", "false"," ", "false", "True","false", "True", "false")
active <- c("false", "false", " "," ", "false", "True"," ", "false", "false")
sad <- c("True", "false", "false"," ", "false", "True","false", "True", "false")
energitic <- c("True", "false", "false"," ", "false", "True","false", "True", "false")
df <- data.frame(EmployeeID, Created, happy, active, sad, energitic)

我正在尝试提取每行至少有一个true的employeeId。

使用
基本R
行和
行和
的选项。根据“真”值的出现情况,在“EmployeeID”以外的列上创建一个逻辑矩阵(
df[-(1:2)]==“真”
),然后“创建”,获取
行和数
,通过
rowsum
和逻辑向量上的“EmployeeID”进行分组,并检查是否有任何值大于0,并返回矩阵的行名('m1')


如果我们想使用
tidyverse

library(dplyr)
df %>%
   rowwise %>% 
   mutate(Flag = "True" %in% c_across(happy:energitic)) %>%
   ungroup

这将为您提供每行至少一个“True”的employeeID

library(tidyverse)
library(magrittr)

df %>% 
  filter_at(vars(-EmployeeID, -Created), any_vars( . == "True")) %>% 
  select(EmployeeID) %>% 
  extract2(1)

在数据集中没有106或108,即示例中显示的EmployeeID是101、102和104。此外,根据输入,显示的所有ID每行至少有一个true。我已更正我的问题。是否有任何方法通过使用mutate创建一个包含true和false的新列function@priya你是说员工ID是101的那排,106,108都是真的,其他的都是假的,对吗?是的,我想创建一个新的专栏,其中EmployeeID是101,106,108都是真的,其他的都是假的FALSE@priya更新了postGetting以下错误;找不到函数“extract2”此函数来自magrittr,您必须添加“library(magrittr)”。我将编辑答案
df$EmployeeID[(rowSums(df[-(1:2)] == 'True') > 0)]
#[1] 101 106 108
library(dplyr)
df %>%
   rowwise %>% 
   mutate(Flag = "True" %in% c_across(happy:energitic)) %>%
   ungroup
library(tidyverse)
library(magrittr)

df %>% 
  filter_at(vars(-EmployeeID, -Created), any_vars( . == "True")) %>% 
  select(EmployeeID) %>% 
  extract2(1)