我认为我的想法正确,但可以使用一些帮助。我有类似下面的内容,试图在其中查找ID3
的分子和分母。
我拥有want
,den
和num
以外的所有内容。
want
是基于ID
的ID2
== 0时的目标group
。
num
是出现的分子,其中给定的ID3
的val == 1乘以want
(例如,ID3 == 1与F和B关联,B与val == 1关联,因此是分子对于ID3 == 1,则ID为1,分母为2),并且den
是给定ID3
的出现次数的分母。
我想我可以通过使用ID3的den
的UniqueN来解决want
,但不确定如何获取num
。
请帮助我解决需求,数量和数量!
df<-data.frame(ID=c('A', 'B', 'A', 'C', 'C', 'D', 'E', 'F'),
ID2=c(1, 0, 1, 1, 1, 0, 1, 0),
ID3=c(1,2,3,4,5,6,1,2),
group=c(1,1,1,2,2,2, 3, 3),
val=c(1,1,1,0,0,0,0,0),
want=c('B','B','B','D', 'D', 'D', 'F', 'F'),
den=c(2,2,1,1,1,1,2,2),
num=c(1,1,0,0,0,0,1,1))
df
ID ID2 ID3 group val want den num
1 A 1 1 1 1 B 2 1
2 B 0 2 1 1 B 2 1
3 A 1 3 1 1 B 1 0
4 C 1 4 2 0 D 1 0
5 C 1 5 2 0 D 1 0
6 D 0 6 2 0 D 1 0
7 E 1 1 3 0 F 2 1
8 F 0 2 3 0 F 2 1
我们可以进行比较以将值分组后的子集进行比较
library(dplyr)
df %>% group_by(group) %>% mutate(want2 = ID[ID2==0])
或者另一个选项是match
df %>% group_by(group) %>% mutate(want = ID[match(0, ID2)])