按因子分组,如果任何行上的字符匹配,则返回1- R

cvxl0en2  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(155)

我的数据集按RunID分组,患者的每个诊断都有不同的行。
我正在尝试创建一个新变量,以确定特定诊断(例如肺炎)是否出现在该RunID内的任何行上。
我尝试使用任何,但收到错误消息Caused by warning inany(): ! coercing argument of type 'character' to logical
有什么建议吗?我试过的是:

data %>%
  group_by(RunID) %>%
  mutate(Pneumonia = ifelse(any(diagnosis="Pneumonia"),1,0))

复溶:

library(tibble)
library(dplyr)

data <- tribble(
  ~RunID, ~diagnosis,
  "A12", "Pneumonia",
  "A12", NA,
  "A12", "copd",
  "A12", "CF",
)

data$RunID<-as.factor(data$RunID)

desired <- tribble(
  ~RunID, ~diagnosis, ~Pneumonia,
  "A12", "Pneumonia", 1,
  "A12", NA, 1,
  "A12", "copd", 1,
  "A12", "CF", 1
)
toe95027

toe950271#

any(diagnosis="Pneumonia")中,我们可能需要==而不是=,但也可以这样做

library(dplyr) # version >= 1.1.0
data %>% 
  mutate(pneumonia = +('Pneumonia' %in% diagnosis), .by = 'RunID')

相关问题