#python #r
Вопрос:
Я собираюсь найти количество совпадений между некоторыми группами (расположенными в виде столбцов набора данных). На самом деле, я хочу использовать эти значения, чтобы нарисовать диаграмму Венна для своих данных. Мне требуется подсчитать все значения, отличные от NA, для каждого столбца, а также количество значений, отличных от NA, перекрывающихся между различными столбцами (например, группа 1 с группой 2 или группой 1, группой 2 и группой 4, ……….). Содержание ячеек не важно, и я не ищу общие ячейки между столбцами. Я просто хочу подсчитать не-NAs, независимо от их содержимого. У вас есть идея сделать это с помощью R или python? пример частью данных: структура(список(В1 = С(«Группа1», «XP_032738419.1», «XP_032715310.1», «XP_032703108.1», «XP_032700385.1», НС, НС, НС, НС, НС, НС, НС, НС, НС, НС, НС, НС, НС, НС, НС), В2 = С(«Группа2», «XP_011286297.1, XP_011286306.1, XP_019670819.1, XP_019670818.1, XP_023097752.1, XP_011286308.1, XP_011286311.1, XP_023097760.1, XP_011286303.1, XP_023097755.1, XP_023097756.1, XP_023097757.1, XP_023097758.1, XP_023097754.1, XP_023097753.1, XP_011286310.1, XP_023097759.1, XP_019670826.1, XP_011286304.1, XP_019670828.1», НА «XP_019685915.1», «XP_023112367.1», НС, НС, НС, НС, НС, НС, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА), V3 = c(«Группа 3», «XP_038528678.1», «XP_038300380.1», «XP_038538922.1», «XP_038295408.», НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА), V4 = c(«Группа 4», «XP_012903997.1», «XP_004748105.1, XP_012909429.1», «XP_012905661.1», «XP_012901919.1», НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА), V5 = c(«Группа 5», «NP_001310871.1», «NP_001341201.1», «NP_001374917.1», «NP_001123304.1», НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА, НА), V6 = c(«Группа 6», «XP_044098939.1», «XP_044080143.1», «XP_044112499.1», «XP_044084408.1», NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(«1», «2», «3», «4», «5», «NA», «NA.1», «NA.2», «NA.3», «NA.4», «NA.5», «NA.6», «NA.7», «NA.8», «NA.9», «NA.10», «NA.11», «NA.12», «NA.13», «NA.14»), class = «data.frame»)
Комментарии:
1. Во-первых: определите, что вы подразумеваете под «перекрытием». Во-вторых, удалите это изображение и замените его выводом
dput(dfrm, 20))
. Я не сторонник отказа, но я предполагаю, что это связано с чьим-то предположением, что вы не читали страницу справки, где говорится, что изображения наборов данных не приветствуются, потому что они подразумевают, что наша задача-повторить ввод ваших данных..2. Спасибо. Я имею в виду количество клеток, которые не являются NA, как, например, в первой, так и во второй группах.
Ответ №1:
Количество строк, в которых и Group1, и Group2 являются NA, будет равно:
sum( rowSums( is.na( dfrm[1:2]) ) == 2)
По крайней мере, я надеюсь, что так оно и будет. is.na(.)
примененный к фрейму данных (или подмножеству фрейма данных, как я пытаюсь здесь), должен возвращать логический фрейм данных с эквивалентными размерами, а затем вы можете проверить, равно ли количество строк логики (1=TRUE, 0=FALSE) 2. Затем вы их складываете. Обычный код R лучше всего читать изнутри, как это демонстрирует. То magrittr
/ tidyverse
языковой вариант R меняет расположение аргументов и функций. Вы все равно должны удалить изображение и опубликовать [MCVE], и в идеале вы бы [отредактировали] свой вопрос, чтобы уточняющая информация в вашем комментарии была доступна для людей, ищущих аналогичную помощь.