我想基于此数据集和文本数据创建两个不同的数据集。
id <- c(24, 24, 56, 56, 56, 56, 92, 92, 92)
visit_id <- c(1, 2, 1, 2, 3, 4, 1, 2, 3)
location <- c('Hospital', 'Hospital', 'Clinic', 'Hospital', 'Hospital',
'Hospital', 'Clinic', 'Hospital', 'Clinic')
data <- data.frame(id, visit_id, location)
对于第一个数据集,我的目标是创建一个虚拟变量,用于识别首次就诊于诊所并分配“1”的患者。那些符合这个标准的人。所以它看起来像这样......
id <- c(24, 56, 92)
exclude <- c(0, 1, 1)
data1 <- data.frame(id, exclude)
对于第二个数据集,我想确定那些有访问医院或诊所并给他们分配“0&#39”的记录的人。
id <- c(24, 56, 92)
exclude <- c(1, 0, 0)
data2 <- data.frame(id, exclude)
我不熟悉循环,并且在数值数据上使用条件运算符有一些经验。
答案 0 :(得分:1)
您可以使用dplyr
包:
library(dplyr)
data %>% filter(visit_id == 1) %>%
mutate(exclude = if_else(location=="Clinic",1,0)) %>% select(id,exclude)
# id exclude
# 1 24 0
# 2 56 1
# 3 92 1
data %>% group_by(id) %>% mutate(exclude = ifelse(length(unique(location))==1,1,0)) %>%
select(id,exclude) %>% filter(row_number()==1)
# # A tibble: 3 x 2
# id exclude
# <dbl> <dbl>
# 1 24 1
# 2 56 0
# 3 92 0