в R: выбор столбцов в фрейме данных из числовых значений в строке - PullRequest
0 голосов
/ 02 ноября 2018

Пожалуйста, могу ли я попросить совета:

С учетом фрейма данных в R, который содержит числовые значения для выражения гена:

x <- data.frame(TTT=c(0,1,0,0),
                TTA=c(0,1,1,0),
                ATA=c(1,0,0,0),
                gene=c("gene1", "gene2", "gene3", "gene4"))

Как я могу выбрать только КОЛОННЫ, где значение ГЕНА (ряд) не равно нулю?

спасибо!

- Богдан

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

Вы можете рассмотреть dplyr библиотеку. В этом пакете есть функция filter, которая позволяет вам задавать строки с заданными условиями.

Добавляя _if за функцией, вы можете легко выбирать только числовые столбцы , используя is.numeric.

x <- data.frame(TTT=c(0,1,0,0),
                TTA=c(0,1,1,0),
                ATA=c(1,0,0,0),
                gene=c("gene1", "gene2", "gene3", "gene4"))

library(dplyr)
x %>%
  filter_if(is.numeric, any_vars(. != 0)) # any_vars() takes |

#>   TTT TTA ATA  gene
#> 1   0   0   1 gene1
#> 2   1   1   0 gene2
#> 3   0   1   0 gene3
0 голосов
/ 02 ноября 2018

Опция с использованием data.table будет

x <- data.table(TTT=c(0,1,0,0),
                TTA=c(0,1,1,0),
                ATA=c(1,0,0,0),
                gene=c("gene1", "gene2", "gene3", "gene4"))

x <- x[TTT != 0 | TTA != 0 | ATA != 0, ]

Более жестким вариантом будет

x <- x[(TTT + TTA + ATA) != 0, ] 
0 голосов
/ 02 ноября 2018

Один вариант, используя rowSums:

x[rowSums(x[1:3]) > 0, ]

  TTT TTA ATA  gene
1   0   0   1 gene1
2   1   1   0 gene2
3   0   1   0 gene3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...