我有一個分組資料,我正在嘗試洗掉組的第一行在 Caffeinefactor 列中為“是”的所有組。
我有以下代碼,但似乎不正確:
library(dplyr)
df2 <- Data2 %>%
setDT(Data2) %>%
group_by(PATIENT.ID) %>%
add_column(TrueFalse =
ifelse(Data2$Caffeinefactor == "yes" & row_number(1)), TRUE, FALSE)
filter(Caffeinefactor %in% c("row_number(1)", "yes"))
對于以下資料(只是所有資料的一小部分),例如,我想洗掉患者“220909”,因為它在第一行中有“是”。
DF = structure(list(PATIENT.ID = c(210625L, 210625L, 210625L, 210625L,
210625L, 210625L, 210625L, 210625L, 210625L, 210625L, 210625L,
210625L, 210625L, 210625L, 210625L, 210625L, 210625L, 220909L,
220909L, 220909L, 220909L, 220909L, 220909L, 220909L, 220909L,
220909L, 220909L, 221179L, 221179L, 221179L, 221179L, 221179L,
221179L, 221179L, 221179L, 221179L, 221179L, 221179L, 221179L,
221179L, 221179L, 301705L, 301705L, 301705L, 301705L, 301705L,
301705L, 301705L, 301705L, 301705L, 301705L, 301705L, 301705L,
301705L, 301705L, 301705L, 303926L, 303926L, 303926L, 303926L
), PATIENT.TREATMENT.NUMBER = c(1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L,
10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 1L, 2L, 3L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L,
10L, 11L, 12L, 13L, 17L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L,
10L, 12L, 13L, 14L, 15L, 16L, 1L, 2L, 3L, 4L), Caffeinefactor = c("no",
"no", "no", "no", "yes", "yes", "yes", "no", "yes", "yes", "yes",
"yes", "yes", "no", "no", "yes", "yes", "yes", "yes", "yes",
"yes", "yes", "yes", "yes", "yes", "yes", "no", "no", "no", "no",
"no", "no", "no", "no", "no", "no", "yes", "yes", "yes", "yes",
"yes", "no", "no", "no", "no", "no", "no", "yes", "no", "yes",
"yes", "yes", "yes", "yes", "yes", "yes", "no", "no", "no", "no"
)), row.names = c(NA, -60L), class = c("data.table", "data.frame"
), .internal.selfref = <pointer: 0x7fe7f7002ee0>)
uj5u.com熱心網友回復:
groups <- Data2 %>%
setDT(Data2) %>%
dplyr::group_by(PATIENT.ID)
groups_we_want_removed <- Data2 %>%
setDT(Data2) %>%
dplyr::group_by(PATIENT.ID) %>%
dplyr::mutate(rownum = dplyr::row_number()) %>%
dplyr::filter((rownum == 1 & Caffeinefactor == "yes"))
remove_people_with_only_no_caffeinefactor <- Data2 %>%
setDT(Data2) %>%
dplyr::group_by(PATIENT.ID) %>%
dplyr::filter(Caffeinefactor == "yes")
desired_result <- groups %>%
filter(!PATIENT.ID %in% groups_we_want_removed$PATIENT.ID) %>%
filter(PATIENT.ID %in% remove_people_with_only_no_caffeinefactor$PATIENT.ID)
uj5u.com熱心網友回復:
由于您已經在使用 data.table,因此 het 是一種data.table方法:
DF[!PATIENT.ID %in% DF[, Caffeinefactor[1] == "yes",
by = .(PATIENT.ID)][V1 == TRUE, ]$PATIENT.ID, ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447559.html
標籤:r
