1) tapply / unique При условии, что требуются только уникальные значения status
, можно использовать это базовое решение R:
with(DF, tapply(as.character(status), fruit, unique, simplify = FALSE))
дает:
$apple
[1] "ripe" "rotten"
$banana
[1] "ripe" "rotten"
$pear
[1] "ripe" "rotten"
2) split Если бы было известно, что подуровни каждого уровня уже уникальны, то этого базового решения R было бы достаточно и он дает тот же результат.
with(DF, split(as.character(status), fruit))
3) таблица Другой формой вывода, которая может быть полезна, является таблица, показывающая число вхождений каждого подуровня в каждом уровне. Опять же, здесь используется только база R.
m <- table(DF[-1])
m
дает:
status
fruit ripe rotten
apple 1 1
banana 1 1
pear 1 1
Мы можем создать двудольный граф, используя пакет igraph:
library(igraph)
g <- graph_from_incidence_matrix(m)
plot(g, layout = layout_as_bipartite)