У меня есть набор данных из 3 столбцов с столбцом 1, являющимся идентификатором (НЕ УНИКАЛЬНЫМ) И КОЛОННЫМИ 2 И 3, являющимися положительным и отрицательным значением, связанным с идентификатором, соответственно. Я новичок в R и просто пытаюсь выяснить, как подсчитать количество пар значений, связанных с каждым идентификатором. Стол и уникальная функция не помогают, так как мне приходится считать пары. Благодаря!Подсчет пар в R
ответ
с data.table пакета
library(data.table)
tdata[, list(paircount = .N) , by = c("ID","COLUMN2","COLUMN3")]
EDIT:
на основе Майкла обратной связи, я, возможно, неправильно понял вопрос.
tdata[, list(paircount = nrow((unique(.SD)))), by = "ID"]
должно предоставить вам то, что вам нужно.
Я уверен, что если DataScience захочет сделать это, он или она просто будет использовать 'table()' ... –
В чем разница между вашим методом и этим методом Arun http://stackoverflow.com/questions/26244685/ count-every-possible-pair-of-values-in-a-column-by-by-multiple-columns с помощью setorder и setkey? – skan
Может попробовать
unique(data[,c("ID", "COLUMN2", "COLUMN3")])
Или, чтобы иметь результаты Groupes по ID:
by(data = data[,c("COLUMN2", "COLUMN3")],INDICES = data$ID, FUN = unique)
Я предполагаю, что вы хотите подсчитать количество уникальных пар для каждого ID. Как указано в @BondedDust, используйте interaction
:
df$pair <- with(df, interaction(COLUMN2, COLUMN3))
rowSums(xtabs(~ id + pair, df) > 0)
Рассмотрите возможность использования 'взаимодействия'. Вам также нужно разместить пример. –