如何使用while循环文本数据并创建新数据集

时间:2018-06-14 22:59:33

标签: r dataframe

我想基于此数据集和文本数据创建两个不同的数据集。

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)

我不熟悉循环,并且在数值数据上使用条件运算符有一些经验。

1 个答案:

答案 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