У меня есть такой фрейм данных:
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 ответа
Основываясь на описании, нам может потребоваться сгруппировать по 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))
Если бы вы могли включить воспроизводимый пример ваших данных, было бы неплохо!
Но это должно работать, если вы пытаетесь группировать по snp2
m %>%
group_by(snp2) %>%
summarize(sumR2 = n_distinct(r2>0.8))
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.