Нормализовать указанные столбцы в dplyr по значению в первой строке - PullRequest
0 голосов
/ 16 июня 2019

У меня есть фрейм данных с четырьмя строками, 23 числовыми столбцами и одним текстовым столбцом. Я пытаюсь нормализовать все числовые столбцы, вычитая значение в первой строке.

Я пытался заставить его работать с mutate_at, но я не мог найти хороший способ заставить его работать.

Я заставил его работать, преобразовав матрицу и преобразовав обратно в таблицу:

## First, did some preprocessing to get out the group I want
totalNKFoldChange <- filter(signalingFrame,
                            Population == "Total NK") %>% ungroup

totalNKFoldChange_mat <- select(totalNKFoldChange, signalingCols) %>%
    as.matrix()

normedNKFoldChange <- sweep(totalNKFoldChange_mat,
                            2, totalNKFoldChange_mat[1,])

normedNKFoldChange %<>% cbind(Timepoint = 
                              levels(totalNKFoldChange$Timepoint)) %>% 
    as.tibble %>%
    mutate(Timepoint = factor(Timepoint,
                              levels = levels(totalNKFoldChange$Timepoint)))

Я так уверен, что есть более хороший способ сделать это, если бы он был полностью нативным. У кого-нибудь есть советы? Спасибо !!

1 Ответ

1 голос
/ 16 июня 2019

Если мы хотим normalize all the numeric columns by subtracting the value in the first row, используйте mutate_if

library(dplyr)
df1 %>%
     mutate_if(is.numeric, list(~ .- first(.)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...