У меня есть столбец данных, который описывает возможные заболевания. Я пытаюсь изменить эти качественные значения на количественные. Так, например, при установке условий, таких как «если строка содержит слова« артериальное давление », удалите все символы и замените их на 3, если в строке« сердце »замените на 2, если в строке« диабет »или« заболевание почек »замените равным 1, если любое другое условие заменяется на 0,5 "
Например, мои данные выглядят следующим образом:
Gene Condition
Gene1 Name=Asymmetrical dimethylarginine level, Name=Bipolar disorder and schizophrenia, Name=3-hydroxypropylmercapturic acid levels in smoker
Gene2 Name=blood pressure, Name=diabetes
Gene3 Name=heart disease
Gene4 Name=Childhood ear infection
Gene5 NA
Gene6 Name=kidney disease
Вывод, который я пытаюсь получить на основе упомянутых выше условий:
Gene Condition
Gene1 0.5
Gene2 3
Gene3 2
Gene4 0.5
Gene5 NA
Gene6 1
Я новичок в R и поэтому не уверен, что способ, которым я пытаюсь, является лучшим, но я пытаюсь выполнить свои условия, чтобы заменить указанные строки c (но не все символы ), производя несколько чисел в строке (смешанных со строками), если выполняется более 1 условия, затем применяя функцию getmax
для каждой строки, чтобы получить наибольшее доступное число. Однако я застрял на настройке условий для выполнения цепочки в номер разговора. Я пытался сделать:
data$condition[data$condition == "blood pressure"] <- "3"
data$condition[data$condition == "heart disease"] <- "2"
data$condition[data$condition == "diabetes" | "kidney disease"] <- "1"
data$condition[data$condition == "Name" && !"diabetes" | "kidney disease" | "blood pressure" | "heart disease"] <- "0.5"
Однако это дает ошибку, что «объект типа« замыкание »не является поднабором», и по крайней мере для этого подхода я не могу найти решение за эту ошибку онлайн. Буду признателен за любую помощь.
Пример данных (при первой попытке предоставить данные, пожалуйста, дайте мне знать, если что-то не так):
structure(list(Gene = c("Gene1", "Gene2", "Gene3", "Gene4", "Gene5",
"Gene6"), Condition = c(" Name=Asymmetrical dimethylarginine level, Name=Bipolar disorder and schizophrenia, Name=3-hydroxypropylmercapturic acid levels in smoker",
" Name=blood pressure, Name=diabetes", "Name=heart disease",
"Name=Childhood ear infection", NA, "Name=kidney disease")), row.names = c(NA,
-6L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x000001bea99a1ef0>)