是否有任何逻辑可以找到连续至少有一个真
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)
预期产量
101
106
108
我正在尝试提取在每一行中至少为true的employeeId。
base R
与rowSums
和一起使用的选项rowsum
。创建逻辑矩阵(df[-(1:2)] == 'True'
基于对“真”值的发生),就“创造”不是“雇员”等列,得到了rowSums
,做一组由sum
同rowsum
在逻辑向量与“雇员”,并检查是否有任何大于0的值,并返回矩阵的行名('m1')
m1 <- rowsum(+(rowSums(df[-(1:2)] == 'True') > 0), df$EmployeeID) > 0
row.names(m1)[which(m1)]
#[1] "101" "106" "108"
rowsum
如果“ EmployeeID”是唯一的,即没有重复,则不需要
df$EmployeeID[(rowSums(df[-(1:2)] == 'True') > 0)]
#[1] 101 106 108
如果我们要使用 tidyverse
library(dplyr)
df %>%
rowwise %>%
mutate(Flag = "True" %in% c_across(happy:energitic)) %>%
ungroup
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句