Я хотел бы использовать небольшой фрейм данных с одним столбцом идентификаторов, чтобы идентифицировать информацию для суммирования из большего фрейма данных. Однако эти идентификаторы распределены по нескольким столбцам в большом кадре данных. Я попытался просто установить подмножество из более крупного информационного кадра, используя различные выражения group_by%>%, суммирующие выражения «n_distinct», но это занимает очень много времени, так как я группирую столбец за столбцом, и кажется, что должен быть более эффективный способ. Вот пример того, что я пытаюсь сделать:
маленький фрейм данных, который я хочу заполнить сводной информацией:
df1<-data.frame(ID=c("X0","X1","X2","X3","X4","X5","X6"))
ID
XO
X1
X2
X3
X4
X5
X6
больший фрейм данных Я хочу суммировать данные из
df2<-data.frame(P1=c("X1","X1","X1","X0","X0","X0","X4","X4","X2","X2","X2"),
P2=c("X0","X0","X0","X2","X2","X2","X1","X1","X1","X1","X1"),
P3=c("X2","X2","X2","X5","X5","X5","X2","X2","X0","X0","X0"),
P4=c("X3","X3","X3","X4","X4","X4","X3","X3","X4","X4","X4"),
G=c("1","1","1","1","1","1","2","2","2","2","2"),
NPO=c("1","0","0","1","0","0","1","0","1","0","0"),
PO=c("1","1","1","2","2","2","3","3","4","4","4"))
P1 P2 P3 P4 G NPO PO
X1 X0 X2 X3 1 1 1
X1 X0 X2 X3 1 0 1
X1 X0 X2 X3 1 0 1
X0 X2 X5 X4 1 1 2
X0 X2 X5 X4 1 0 2
X0 X2 X5 X4 1 0 2
X4 X1 X2 X3 2 1 3
X4 X1 X2 X3 2 0 3
X2 X1 X0 X4 2 1 4
X2 X1 X0 X4 2 0 4
X2 X1 X0 X4 2 0 4
Из этого большего набора данных я хотел бы сопоставить X1, X2, X3 и т. Д. ... от небольшого информационного кадра до различных столбцов (P1, P2 и т. Д.) И найти, сколько уникальных "PO"Значения существуют для этого идентификатора и помещают этот вывод в небольшой информационный кадр в виде новой строки. Требуемый вывод:
ID Gs POs
XO 2 3
X1 2 3
X2 2 4
X3 2 2
X4 2 3
X5 1 1
X6 0 0
G и PO указывают количество раз, когда идентификатор появлялся вместе с уникальным значением "G" или "PO". То, что разные столбцы «P» могут иметь одинаковые значения идентификатора «X», означает, что хотя идентификатор будет отображаться только один раз в одном столбце для одного и того же «PO», он может отображаться в разных столбцах для одного и того же «G». Если есть лучший способ сделать это путем поднабора большего набора данных, основанного на всех уникальных значениях от P1 до P4, в качестве единственной переменной «group_by», что также было бы очень полезно.