Подмножество списка в Dataframe R в категориальной переменной - PullRequest
0 голосов
/ 23 апреля 2020

Мои данные выглядят так, но количество наблюдений составляет примерно 10000.

Part<-c(1,2,3,4,5,6,7)
Disease_codes>-c("A101.12","A111.12","A121.13","A130.0","B102","C132","D156")
class(Disease_codes)<-Factor

df<-data.frame(Part,Disease_codes)

Обс, имеющие коды Disease_coss начиная с A10_A13, являются BloodCancer пациентами. Мне нужно сделать подмножество этого, и я пытаюсь следовать

BloodCancer <- subset(df, grepl('^A10', Disease_codes), select = Part

Part_without_Blood_cancer <- subset(df, !grepl('^A10', Disease_codes)) 

Если я пытаюсь следующее, это не работает.

BloodCancer <- subset(df, grepl('^A10-A13', Disease_codes), select = Part

Но это дает мне только кодировку A10, содержащую Участники, но я хочу, чтобы переменная BloodCancer содержала все от A10-A13. Как я могу сделать это в одной команде.

Ответы [ 3 ]

1 голос
/ 23 апреля 2020

синтаксис для grepl для возврата true для любой из строк (например, A10, A11) следующий: grepl («A10 | A11», переменная). Чтобы сохранить это как одно утверждение, вы можете сделать следующее:

BloodCancer = subset(df, grepl(paste(paste("A1", 0:3, sep = ""), collapse = "|"), Disease_codes), select = Part)
0 голосов
/ 23 апреля 2020

Опция с dplyr

library(dplyr)
library(stringr)
df %>%
  filter(str_detect(Disease_codes, "^A1[0-3]")) %>%
  select(Part)
0 голосов
/ 23 апреля 2020

попробуй сделать это так

BloodCancer <- subset(df, grepl("^A1[0-3]", as.character(Disease_codes)), select = Part)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...