将同一列中的每个元素与R中的其他记录集进行比较

将同一列中的每个元素与R中的其他记录集进行比较,r,R,我有一个数据表,其中需要根据同一列中两种不同类型的元素之间的比较/匹配来填充结果列。 这里我们需要在对象1和对象2之间逐个比较同一列中的值,而不是逐列比较 若你们能看到我提到的第一行的结果值1,0,1意味着对象1的第1列和对象2的第1列相匹配。同样,第2列为0,第3列为1 感谢R中有或没有软件包的任何解决方案我不确定我是否理解您的问题。在不知道类型和列的值数量限制的情况下,下面是tidyverse的一般解决方案: # Your data (there seems to be a problem

我有一个数据表,其中需要根据同一列中两种不同类型的元素之间的比较/匹配来填充结果列。 这里我们需要在对象1和对象2之间逐个比较同一列中的值,而不是逐列比较

若你们能看到我提到的第一行的结果值1,0,1意味着对象1的第1列和对象2的第1列相匹配。同样,第2列为0,第3列为1


感谢R中有或没有软件包的任何解决方案

我不确定我是否理解您的问题。在不知道类型和列的值数量限制的情况下,下面是tidyverse的一般解决方案:

# Your data (there seems to be a problem on line3 result)
df <- read.table(text=
"Type Col1 Col2 Col3 Result
O1 A B F 1,0,1
O1 B D S 0,1,0
O1 C F R 0,0,0
O1 D D D 1,1,1
O2 A F F 1,0,1
O2 D D D 1,1,1",header=TRUE,stringsAsFactors=FALSE)

df %>% select(-Result) %>% mutate(id=row_number()) -> df1
df1 %>% gather(k,v,-Type,-id) -> df2
crossing(df2,df2) %>%
   filter((Type!=Type1)&(k==k1)) %>%
   mutate(z=as.integer(v==v1)) %>%
   group_by(id,id1,k) %>%
   arrange(desc(z)) %>% filter(row_number()==1) %>%
   group_by(id,id1) %>% arrange(k) %>%
   summarise(n=sum(z),z=paste(z,collapse=","))%>%
   filter(n>=max(n)) %>%
   select(-id1,-n) %>%
   inner_join(df1,.,by="id")
#  Type Col1 Col2 Col3 id     z
#1   O1    A    B    F  1 1,0,1
#2   O1    B    D    S  2 0,1,0
#3   O1    C    F    R  3 0,1,0
#4   O1    D    D    D  4 1,1,1
#5   O2    A    F    F  5 1,0,1
#6   O2    D    D    D  6 1,1,1
#您的数据(第3行结果似乎有问题)
df%select(-Result)%%>%mutate(id=row_number())->df1
df1%>%聚集(k,v,-Type,-id)->df2
交叉(df2,df2)%>%
过滤器((类型!=Type1)和(k==k1))%>%
变异(z=as.integer(v==v1))%>%
分组依据(id,id1,k)%>%
排列(描述(z))%%>%过滤器(行号()==1)%%>%
分组依据(id,id1)%%>%k)%%
总结(n=sum(z),z=paste(z,collapse=“,”))%>%
过滤器(n>=最大值(n))%>%
选择(-id1,-n)%%>%
内部联接(df1,by=“id”)
#类型Col1 Col2 Col3 id z
#1 O1 A B F 11,0,1
#2O1BDS20,1,0
#3O1CFR30,1,0
#4 O1 D D 4 1,1,1
#5 O2 A F 5 1,0,1
#6O2 D 6 1,1,1

请提供一个可复制的示例。不要张贴图片;而是发布你的数据集。您描述的获取
结果的逻辑不太清楚。由于有许多行的
Object1
Object2
我不知道哪一行的
Object1
必须与哪一行的
Object2
进行比较。在现实生活中,Type只有两个值,只有三列Col1到Col3吗?