как посчитать количество строк определенного столбца, который имеет определенный символ - PullRequest
1 голос
/ 25 марта 2019

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

df<-structure(list(Gene.refGene = structure(c(1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 4L, 4L, 4L, 4L, 4L), .Label = c("A1BG", "A1BG-AS1", "A1CF", 
"A1CF;PRKG1"), class = "factor"), Chr = structure(c(2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("chr10", "chr19"
), class = "factor"), Start = c(58858232L, 58858615L, 58858676L, 
58859052L, 58859055L, 58859066L, 58859510L, 58863162L, 58864479L, 
58864150L, 58864867L, 58864879L, 58865857L, 52566433L, 52569637L, 
52571047L, 52573510L, 52576068L, 52580561L, 52603659L, 52619845L, 
52625849L, 52642500L, 52650951L, 52675605L, 52703952L, 52723140L, 
52723638L), End = c(58858232L, 58858615L, 58858676L, 58859052L, 
58859055L, 58859066L, 58859510L, 58863166L, 58864479L, 58864150L, 
58864867L, 58864879L, 58865857L, 52566433L, 52569637L, 52571047L, 
52573510L, 52576068L, 52580561L, 52603659L, 52619845L, 52625849L, 
52642500L, 52650958L, 52675605L, 52703952L, 52723140L, 52723638L
), Ref = structure(c(3L, 5L, 2L, 2L, 3L, 2L, 5L, 7L, 6L, 6L, 
2L, 1L, 5L, 6L, 5L, 3L, 2L, 5L, 6L, 3L, 3L, 6L, 3L, 4L, 3L, 6L, 
6L, 3L), .Label = c("-", "A", "C", "CTCTCTCT", "G", "T", "TTTTT"
), class = "factor"), Alt_df1 = structure(c(1L, 1L, 4L, 4L, 1L, 
4L, 5L, 1L, 3L, 3L, 4L, 4L, 3L, 1L, 2L, 5L, 1L, 2L, 1L, 5L, 5L, 
2L, 5L, 1L, 4L, 3L, 4L, 2L), .Label = c("-", "A", "C", "G", "T"
), class = "factor")), class = "data.frame", row.names = c(NA, 
-28L)) 

Я хочу знать, сколько строк в столбце с именем "alt_df1" отсутствует или - или NA

Ответы [ 2 ]

2 голосов
/ 25 марта 2019

Вот ответ, используя which и используя base R's LETTERS данные:

length(which(!df$Alt_df1%in%LETTERS))
 #[1] 8

Или используя просто which:

length(which(df$Alt_df1=="-"))
  #[1] 8
1 голос
/ 25 марта 2019

Один из способов - создать логический вектор, используя %in%, а затем sum над ними, чтобы подсчитать количество вхождений.

sum(df$Alt_df1 %in% c("-", NA))
#[1] 8

Или мы также можем subset и посчитать количество строк.

nrow(subset(df, Alt_df1 %in% c("-", NA)))

, что также можно сделать в dplyr с помощью

library(dplyr)
df %>% filter(Alt_df1 %in% c("-", NA)) %>% nrow

Еще один вариант использования grepl

with(df, sum(grepl("-", Alt_df1)) + sum(is.na(Alt_df1)))

и я уверен, что есть несколько других способов.

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