У меня есть данные, где каждая ячейка может иметь несколько значений, например:
Gene Pvalue1 Pvalue2 Pvalue3 Beta
Ace 0.0381, ., 0.00357 0.01755, 0.001385 0.0037, NA , 0.039 -0.03,1,15
NOS NA 0.02 0.001, 0.00067 0.00009,25,30
Я хочу применить min () и max () для данных каждого гена (всего у меня тысячи генов) в каждый столбец и получить наименьшее значение для значений pvalues, но наибольшее значение для столбцов, таких как бета Таким образом, выходные данные будут выглядеть так:
Gene Pvalue1 Pvalue2 Pvalue3 Beta
Ace 0.00357 0.001385 0.0037 15
NOS NA 0.02 0.00067 30
Я задал вопрос для этого ( Выберите минимальное или максимальное значения в одной ячейке (строка с разделителями) ), но лучшее решение имеет проблема, в которой он принимает отрицательные числа c и делает их все положительными.
min2 = function(x) if(all(is.na(x))) NA else min(x,na.rm = T)
getmin = function(col) str_extract_all(col,"[0-9\\.]+") %>%
lapply(.,function(x)min2(as.numeric(x)) ) %>%
unlist()
df %>%
mutate_at(names(df)[-1],getmin)
Как настроить этот код, чтобы отрицательные числа по-прежнему считались отрицательными? Я предполагаю, что это относится к "[0-9\\.]+"
, но я не могу найти какой-либо четкий ресурс о том, что эти символы означают в R. в этом контексте.