Using dogesr to work with Venetian doges family types
Author: JJ Merelo
Date: 2025-06-25

# Using `dogesr` to work with Venetian doges family types

#### JJ Merelo

#### 2025-06-25

## Introduction

For the longest part of its existence, Venetian noble families used marriage tactically (Telek 2017) to improve the lot of their case or dynasties. Since access to nobility was closed by the beginning of the XIV century, and then enlarged little by little, there was a kind of stratification in the nobility, and marrying older families was a way of improving the political, commercial and social prospects for your own family.

Using data from `dogesr` (Merelo-Guervós 2022), we will, in this vignette, see to what extent that happened and how different types of families married with each other.

## Set up

We load the datasets needed; `doges` describes doges and their marriages, `families` includes data for every noble family.

    devtools::load_all(".")
    #> ℹ Loading dogesr
    data("doges")
    data("families")

This will import the data from the `dogesr` package into the `data.doges` data frame, and family data in the `family.types` list. Let’s merge them into a single data frame. The table of all family names and their corresponding family type is shown below.`

    marriages.types <-
      data.frame( doge.family = data.doges$Family.doge,
                  dogaressa.family = data.doges$Family.dogaressa,
                  fam.type.doge = unname( unlist ( family.types[ data.doges$Family.doge ] )),
                  fam.type.dogaressa = unname( unlist ( family.types[ data.doges$Family.dogaressa ] ))
    )
    knitr::kable(marriages.types)

doge.family | dogaressa.family | fam.type.doge | fam.type.dogaressa
--- | --- | --- | ---
Orso |  | Nuovissime | NA
Leone |  | Unknown | NA
Cornicula |  | Unknown | NA
Teodato |  | Unknown | NA
Gioviano |  | Unknown | NA
Fabriciaco |  | Nuove | NA
Teodato |  | Unknown | NA
Gaulo |  | Unknown | NA
Monegario |  | Estinte | NA
Galbaio |  | Estinte | NA
Galbaio |  | Estinte | NA
Antenoreo |  | Unknown | NA
Participazio |  | Estinte | NA
Participazio |  | Estinte | NA
Participazio |  | Estinte | NA
Tradonico |  | Estinte | NA
Participazio |  | Estinte | NA
Participazio |  | Estinte | NA
Candiano |  | Estinte | NA
Pietro | Sanudo | Unknown | Apostoliche
Participazio |  | Estinte | NA
Candiano |  | Estinte | NA
Participazio |  | Estinte | NA
Candiano | Candiano | Estinte | Estinte
Candiano | Candiano | Estinte | Estinte
Candiano | diToscana | Estinte | NA
Orseolo | Malipiero | Estinte | Ducali
Candiano |  | Estinte | NA
Memmo | Candiano | Apostoliche | Estinte
Orseolo | Candiano | Estinte | Estinte
Orseolo | dUngheria | Estinte | NA
Barbolano |  | Unknown | NA
Flabanico |  | Estinte | NA
Contarini |  | Apostoliche | NA
Selvo | Selvo | Nuove | Nuove
Faliero | Bembo | Apostoliche | Evangeliche
Michiel | Corner | Apostoliche | Evangeliche
Faliero | Faliero | Apostoliche | Apostoliche
Michiel | Michiel | Apostoliche | Apostoliche
Polani | Michiel | Apostoliche | Apostoliche
Morosini |  | Apostoliche | NA
Michiel | diBoemodo | Apostoliche | NA
Ziani |  | Vecchie | NA
Malipiero |  | Ducali | NA
Dandolo | Bembo | Apostoliche | Evangeliche
Dandolo | Minotto | Apostoliche | Nuove
Ziani | diSicilia | Vecchie | NA
Tiepolo | Storlato | Apostoliche | NA
Tiepolo | diSicilia | Apostoliche | NA
Morosini |  | Apostoliche | NA
Zeno | daPrata | Vecchie | NA
Tiepolo | Ghisi | Apostoliche | Nuove
Tiepolo | diBrienne | Apostoliche | NA
Contarini |  | Apostoliche | NA
Dandolo |  | Apostoliche | NA
Gradenigo | Morosini | Apostoliche | Apostoliche
Gradenigo | Zantani | Apostoliche | Nuove
Zorzi |  | Vecchie | NA
Soranzo |  | Vecchie | NA
Dandolo | Contarini | Apostoliche | Apostoliche
Gradenigo | Cappello | Apostoliche | Nuove
Dandolo | Morosini | Apostoliche | Apostoliche
Faliero | Gradenigo | Apostoliche | Apostoliche
Faliero | Contarini | Apostoliche | Apostoliche
Gradenigo | Cappello | Apostoliche | Nuove
Gradenigo | Borromeo | Apostoliche | NA
Dolfin |  | Apostoliche | NA
Celsi | Ghisi | Nuove | Nuove
Corner | Corner | Evangeliche | Evangeliche
Contarini |  | Apostoliche | NA
Morosini | Condulmiero | Apostoliche | Nuovissime
Venier | daMosto | Ducali | NA
Steno | Galina | Nuove | NA
Mocenigo | Cappello | Ducali | Nuove
Foscari | Priuli | Ducali | Ducali
Foscari | Nani | Ducali | Nuove
Malipiero | Dandolo | Ducali | Apostoliche
Moro | Sanudo | Ducali | Apostoliche
Tron | Morosini | Ducali | Apostoliche
Marcello | Barbarigo | Ducali | Ducali
Marcello | Contarini | Ducali | Apostoliche
Mocenigo | Zorzi | Ducali | Vecchie
Vendramin | Gradenigo | Nuovissime | Apostoliche
Mocenigo | Michiel | Ducali | Apostoliche
Barbarigo | Ruzzini | Ducali | Nuove
Barbarigo | Soranzo | Ducali | Vecchie
Loredan | Giustinian | Ducali | Evangeliche
Grimani | Loredan | Ducali | Ducali
Gritti | Vendramin | Ducali | Nuovissime
Lando | Pasqualigo | Ducali | Nuove
Donato | Giustinian | Ducali | Evangeliche
Donato | Da Mula | Ducali | Nuove
Trivisan |  | Ducali | NA
Venier |  | Ducali | NA
Priuli | Dandolo | Ducali | Apostoliche
Priuli | Diedo | Ducali | Nuove
Loredan | Pasqualigo | Ducali | Nuove
Loredan | Cappello | Ducali | Nuove
Mocenigo | Marcello | Ducali | Ducali
Venier | Contarini | Ducali | Apostoliche
Da Ponte | Canali | Nuove | NA
Cicogna | Morosini | Nuovissime | Apostoliche
Grimani | Morosini | Ducali | Apostoliche
Donato |  | Ducali | NA
Memmo |  | Apostoliche | NA
Bembo |  | Evangeliche | NA
Donato |  | Ducali | NA
Priuli | Barbarigo | Ducali | Ducali
Contarini |  | Apostoliche | NA
Corner | Delfino | Evangeliche | NA
Contarini |  | Apostoliche | NA
Erizzo |  | Nuove | NA
Molin |  | Nuove | NA
Contarini | Loredan | Apostoliche | Ducali
Corner | Priuli | Evangeliche | Ducali
Valier | Pisani | Nuove | Nuove
Pesaro | Barbarigo | Nuove | Ducali
Contarini |  | Apostoliche | NA
Sagredo |  | Nuove | NA
Contarini |  | Apostoliche | NA
Giustinian |  | Evangeliche | NA
Morosini |  | Apostoliche | NA
Valier | Querini | Nuove | Vecchie
Mocenigo |  | Ducali | NA
Corner | Corner | Evangeliche | Evangeliche
Mocenigo |  | Ducali | NA
Ruzzini |  | Nuove | NA
Pisani | Badoero | Nuove | Evangeliche
Grimani |  | Ducali | NA
Loredan |  | Ducali | NA
Foscarini |  | Nuove | NA
Mocenigo | Corner | Ducali | Evangeliche
Mocenigo | Contarini | Ducali | Apostoliche
Renier | Donato | Nuovissime | Ducali
Renier | Dalmet | Nuovissime | NA
Manin | Grimani | Soldi | Ducali

Let’s create an adjacency matrix for this

    marriages.just.types <- marriages.types
    marriages.just.types$doge.family <- NULL
    marriages.just.types$dogaressa.family <- NULL
    marriages.just.types$fam.type.doge <- paste0(marriages.just.types$fam.type.doge,"♂")
    marriages.just.types$fam.type.dogaressa <- paste0(marriages.just.types$fam.type.dogaressa,"♀")
    levs <- c(unique(unlist(marriages.just.types$fam.type.doge, use.names = FALSE)),unique(unlist(marriages.just.types$fam.type.dogaressa, use.names = FALSE)))
    types.adjacency <- table(lapply(marriages.just.types, factor, levs))
    types.adjacency <- types.adjacency[,-c(1:9)]
    types.adjacency <- types.adjacency[-c(10:18),]
    knitr::kable(types.adjacency)

| NA♀ | Apostoliche♀ | Estinte♀ | Ducali♀ | Nuove♀ | Evangeliche♀ | Nuovissime♀ | Vecchie♀
--- | --- | --- | --- | --- | --- | --- | --- | ---
Nuovissime♂ | 2 | 2 | 0 | 1 | 0 | 0 | 0 | 0
Unknown♂ | 8 | 1 | 0 | 0 | 0 | 0 | 0 | 0
Nuove♂ | 8 | 0 | 0 | 1 | 3 | 1 | 0 | 1
Estinte♂ | 17 | 0 | 3 | 1 | 0 | 0 | 0 | 0
Apostoliche♂ | 18 | 8 | 1 | 1 | 5 | 3 | 1 | 0
Vecchie♂ | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0
Ducali♂ | 10 | 9 | 0 | 5 | 8 | 3 | 1 | 2
Evangeliche♂ | 3 | 0 | 0 | 1 | 0 | 2 | 0 | 0
Soldi♂ | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0

The heaviest link seem to be between the evangeliche and apostoliche cases, although “Not available” is the heaviest column for doges, who either did not marry or married some non-patrician family; this happened most frequently in the pre-Serrata (Puga and Trefler 2014) times.

Let’s look at this in a Sankey diagram

    library(tidyr)
    #>
    #> Adjuntando el paquete: 'tidyr'
    #> The following object is masked from 'package:testthat':
    #>
    #>     matches
    #> The following object is masked from 'package:igraph':
    #>
    #>     crossing
    library(dplyr)
    #>
    #> Adjuntando el paquete: 'dplyr'
    #> The following object is masked from 'package:testthat':
    #>
    #>     matches
    #> The following objects are masked from 'package:igraph':
    #>
    #>     as_data_frame, groups, union
    #> The following objects are masked from 'package:stats':
    #>
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #>
    #>     intersect, setdiff, setequal, union
    library(tibble)
    #>
    #> Adjuntando el paquete: 'tibble'
    #> The following object is masked from 'package:igraph':
    #>
    #>     as_data_frame
    links <- types.adjacency  %>% as.data.frame()
    nodes <- data.frame(
      name=c(as.character(links$fam.type.doge), as.character(links$fam.type.dogaressa)) %>%
        unique()
      )
    links$IDsource <- match(links$fam.type.doge, nodes$name)-1
    links$IDtarget <- match(links$fam.type.dogaressa, nodes$name)-1

    library(networkD3)
    links <- links[ links$Freq > 0,]
    sankeyNetwork(Links = links, Nodes = nodes,
                         Source = "IDsource", Target = "IDtarget",
                         Value = "Freq", NodeID = "name",
                         sinksRight=FALSE)

We are mostly interested, however, in the social links formed by different types of noble families, so we will simply eliminate those rows and columns to have a clearer picture.

    types.adjacency <- types.adjacency[-1,-1]
    links2 <- types.adjacency  %>% as.data.frame()
    nodes2 <- data.frame(
      name=c(as.character(links2$fam.type.doge), as.character(links2$fam.type.dogaressa)) %>%
        unique()
      )
    links2$IDsource <- match(links2$fam.type.doge, nodes2$name)-1
    links2$IDtarget <- match(links2$fam.type.dogaressa, nodes2$name)-1
    links2 <- links2[ links2$Freq > 0,]
    sankeyNetwork(Links = links2, Nodes = nodes2,
                         Source = "IDsource", Target = "IDtarget",
                         Value = "Freq", NodeID = "name")

What we see here is the popularity of apostoliche dogaresse, and of ducali doges. But also how common marrying up was. Apostolochie families couldn’t marry up, since they were in the first post-Serrata batch, so they married with other similar families as well as evangeliche. These, despite being only four families, were quite popular in terms of providing wives for other doges.

Ducali families, being newer to the noble families pool, married preferably up: apostoliche, vecchie and evangeliche, as well as their own class. Only a relative minority married other nuove families. Nuove families, however, did not manage to marry into any apostoliche family; while the few nuovissime and soldo (paid positions) also married up, to apostoliche and ducali families, respectively.

## Conclusions

In (Merelo-Guervós 2022) we hinted at the possibility that marrying in Venetian nobles families was done tactically, so that the commercial and political prospects of both families were enhanced. What we examine in this report is how intermarriage among the different types of families work, and found that, in general, family classes tended to marry older families, thus improving their position in the social network and/or solidifying it by making links to families with higher social capital.

## References

Merelo-Guervós, J. J. 2022. “What Is a Good Doge? Analyzing the Patrician Social Network of the Republic of Venice.” arXiv. https://doi.org/10.48550/ARXIV.2209.07334.
Puga, Diego, and Daniel Trefler. 2014. “International Trade and Institutional Change: Medieval Venice’s Response to Globalization.” The Quarterly Journal of Economics 129 (2): 753–821. https://doi.org/10.1093/qje/qju006.
Telek, Ádám. 2017. “Marrying the Right One – Evidence on Social Network Effects in Politics from the Venetian Republic.” https://editorialexpress.com/cgi-bin/conference/download.cgi?db\_name=SAEe2017\&paper\_id=520.