Не уверен, что я хорошо понимаю вашу проблему. И не зная, каковы пределы в количестве значений для Типа и столбцов, вот общее решение с тидиверсом:
# 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