Как определить количество записей в одном столбце, которые удовлетворяют условию из другого столбца? - PullRequest
1 голос
/ 29 мая 2019

У меня есть такой кадр данных:

head(m,20)

         snp1      snp2    r2
1   rs7278528 rs7278528 1.000
2    rs234750 rs7278528 0.841
3    rs413621 rs7278528 0.841
4    rs413624 rs7278528 0.568
5   rs4920017 rs7278528 0.841
6    rs393280 rs7278528 0.821
7   rs1788470 rs7278528 0.568
8  rs10887972 rs7278528 0.568
9    rs439861 rs7278528 0.568
10  rs1672133 rs7278528 0.841
11   rs370994 rs7278528 0.841
12   rs442981 rs7278528 0.841   
...

Я хотел бы рассчитать и вывести в отдельный столбец для каждого уникального значения в snp2, сколько snp1 имеет r2> 0,8

Я устал делать это, но безуспешно:

m %>%
  group_by(snp1) %>%
  summarize(sumR2 = sumRows(snp1[r2>0.8]))

ОБНОВЛЕНИЕ

это решило мою проблему:

t <- filter(m, r2 >= 0.8) %>% group_by(snp1) %>% mutate(ldbuds = length(r2)) 

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

если бы вы могли включить воспроизводимый пример ваших данных, было бы неплохо!

Но это должно сработать, если вы пытаетесь группировать по snp2

m %>%
  group_by(snp2) %>%
  summarize(sumR2 = n_distinct(r2>0.8))
0 голосов
/ 29 мая 2019

На основании описания нам может потребоваться сгруппировать по 'snp2', извлечь 'snp1', который соответствует значению 'r2' больше 0,8, и получить длину уникальных элементов 'snp1'

library(tidyverse)
m %>%
  group_by(snp2) %>%
  summarize(sumR2 = n_distinct(snp1[r2>0.8]))

Или это может быть

m %>% 
   group_by(snp2) %>%
   summarise(sumR2 =  sum(r2 > 0.8, na.rm = TRUE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...