Подсчет пар в R

У меня есть набор данных из 3 столбцов, где столбец 1 является идентификатором (НЕ УНИКАЛЬНЫМ), а столбцы 2 и 3 - положительным и отрицательным значением, связанным с идентификатором соответственно. Я новичок в R и просто пытаюсь понять, как подсчитать количество пар значений, связанных с каждым идентификатором. Таблица и уникальная функция не помогают, так как мне нужно считать пары. Спасибо!


person DataScience    schedule 08.04.2015    source источник
comment
Рассмотрите возможность использования interaction. Вам также необходимо опубликовать пример.   -  person IRTFM    schedule 08.04.2015


Ответы (3)


с пакетом data.table

library(data.table)
tdata[, list(paircount = .N) , by = c("ID","COLUMN2","COLUMN3")]

РЕДАКТИРОВАТЬ:

Основываясь на отзывах Майкла, я, возможно, неправильно понял вопрос.

tdata[, list(paircount = nrow((unique(.SD)))), by = "ID"]

должен дать вам то, что вам нужно.

person Chris    schedule 08.04.2015
comment
Я почти уверен, что если бы DataScience захотел это сделать, он или она просто использовали бы table()... - person Michael Lawrence; 09.04.2015
comment
В чем разница между вашим методом и этим методом Аруна stackoverflow.com/questions/26244685/ с помощью setorder и setkey? - person skan; 29.12.2016

Я предполагаю, что вы хотите подсчитать количество уникальных пар для каждого идентификатора. Как упоминалось в @BondedDust, используйте interaction:

df$pair <- with(df, interaction(COLUMN2, COLUMN3))
rowSums(xtabs(~ id + pair, df) > 0)
person Michael Lawrence    schedule 08.04.2015

Может попробовать

unique(data[,c("ID", "COLUMN2", "COLUMN3")])

Или, чтобы сгруппировать результаты по ID:

by(data = data[,c("COLUMN2", "COLUMN3")],INDICES = data$ID, FUN = unique)
person Dominic Comtois    schedule 08.04.2015