我有一个数据
subject <- c(1,1,1,2,2,3,3,3)
day <- c(1,2,3,1,2,1,2,3)
RRT <- c(0,0,1,1,0,0,1,1)
SOFA <- c(8,9,2,10,12,11,19,8)
libo <- data.frame(subject,day,RRT,SOFA)我只想选择第一天RRT =0的患者的数据。
subject <- c(1,1,1,3,3,3)
day <- c(1,2,3,1,2,3)
RRT <- c(0,0,1,0,1,1)
SOFA <- c(8,9,2,11,19,8)
libodesired <- data.frame(subject,day,RRT, SOFA)如何才能在不将长格式更改为宽格式的情况下执行它?是否可以使用dplyr?
发布于 2018-01-01 02:12:51
您可以使用双subset
subset(libo,
subject %in% subset(libo, RRT == 0 & day == 1)$subject)
subject day RRT SOFA
1 1 1 0 8
2 1 2 0 9
3 1 3 1 2
6 3 1 0 11
7 3 2 1 19
8 3 3 1 8根据selected subjects subset(libo %in% SUBJECTS)选择
RRT选择subset(libo %in% SUBJECTS)选择RRT day dataframe
发布于 2018-01-01 02:15:11
使用tidyverse和dplyr,您可以根据您的条件选择主题并连接到您的表的子集
subject<-c(1,1,1,2,2,3,3,3)
day<-c(1,2,3,1,2,1,2,3)
RRT<-c(0,0,1,1,0,0,1,1)
SOFA<-c(8,9,2,10,12,11,19,8)
libo<-data.frame(subject,day,RRT,SOFA)
library(dplyr, warn.conflicts = TRUE)
libo %>%
# select base on your criteria
group_by(subject) %>%
filter(RRT == 0 & day == 1) %>%
select(subject) %>%
# only keep rows from libo based on your subjects selection
left_join(libo, by = "subject")
#> # A tibble: 6 x 4
#> # Groups: subject [?]
#> subject day RRT SOFA
#> <dbl> <dbl> <dbl> <dbl>
#> 1 1 1 0 8
#> 2 1 2 0 9
#> 3 1 3 1 2
#> 4 3 1 0 11
#> 5 3 2 1 19
#> 6 3 3 1 8https://stackoverflow.com/questions/48044743
复制相似问题