Заполните столбцы данными с помощью 2 определенных параметров - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть пример рабочего набора данных (называемый df), к которому я добавил столбцы в R, и я хотел бы заполнить эти столбцы данными в соответствии с очень конкретными условиями.

Iпроверял образцы в лаборатории с 8 различными переменными и всегда проверял каждый образец с каждой переменной дважды (столбец выборки).Из этого я вычислил средний результат, который называется Cq_mean.

Столбцы, которые я добавил в R ниже, относятся к каждому имени переменной.

Я хотел бы заполнить эти столбцы positive или negative на основе 2 условий:

  1. Переменная

  2. Cq_mean

Как вы видите с моим кодом ниже, я могусоздать positive или negative результаты на основе Cq_mean, однако это логически запускает его по всему набору данных, не принимая во внимание также и переменную, и заполняет ячейки данными, которые я хотел бы оставить пустыми.Я не уверен, как попросить R принять во внимание эти два условия одновременно.

положительный: Cq_mean <= 37.1 отрицательный: Cq_mean >= 37

Полезная информация:

В sample данные всегда разделяются тире (-) с номером выборки впереди и именем переменной после.Каким-то образом мне нужно выделить то, что следует за чертой.

Пожалуйста, обратитесь к моей таблице желаемых результатов, чтобы визуализировать то, к чему я стремлюсь.

df <- read.table("https://pastebin.com/raw/ZPJS9Vjg", header=T,sep="")

добавить имена столбцов, соответствующие переменным

df$TypA <- ""
df$TypB <- ""
df$TypC <- ""
df$RP49 <- ""
df$RPS5 <- ""
df$H20 <- ""
df$F1409B <-""
df$F1430A <- ""

заполнить столбцы данными

df$TypA <- ifelse(df$Cq_mean>=37.1,"negative", 'positive')
df$TypB <- ifelse(df$Cq_mean>=37.1,"negative", 'positive')

и продолжить с каждой переменной

желаемых результатов (подмножество всего набора данных, выполненных вручную в Excel):

desired_outcome <- read.table("https://pastebin.com/raw/P3PPbiwr", header = T, sep="\t")

1 Ответ

1 голос
/ 29 апреля 2019

Что-то вроде этого поможет:

df$TypA[grepl('TypA', df$sample1)] <- ifelse(df$Cq_mean[grepl('TypA', df$sample1)] >= 37.1, 
                                            'neg', 'pos')

Вам нужно будет делать это один раз для каждого нового столбца.

grepl будет отфильтровывать только те строки, в которых указана выбранная вами строка (здесь TypA) в примере переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...