What determines which side of the bed I sleep on?

2025-10-26

I counted up and I have lived for more than 6 months in 15 different bedrooms, each with a double bed, and mostly shared with my partner.

I wanted to know what factors determine whether I sleep on the left or the right side of the bed. The left side as I’m defining it is as if you are looking from the head end of the bed down to the foot end.

For each bed I recorded the position of the bedroom door, the position of the window (I’ve never lived in a place where there was more than one window in the bedroom), and whether the left or right side of the bed was touching a wall. In all the places I’ve lived the head end of the bed is pushed up against a wall.

Bar chart showing the side of the bed I sleep on.
 Left Right 
    8     7

It’s very nearly an even split, whether I sleep on the left or the right side of the bed.

Bar chart showing the side of the door and the side of the bed I sleep on.
             bed side
door position Left Right
        Left     4     4
        Right    4     3

Position of the bedroom door doesn’t seem to have much of an effect on what side of the bed I sleep on. The raw data underlying this plot is slightly more complicated. Where the door was on the wall opposite the foot of the bed, I recorded whether the door was more to the left or the right of the centre of the bed, and similarly when the door was on the same wall as the head of the bed.

Bar chart showing the side of the window and the side of the bed I sleep on.
               bed side
window position Left Right
          Left     5     3
          Right    3     4

Window position looks like a more important factor. When the window is on the left side I tend to sleep on the left side, and vice versa. As with door position, I made a judgement call when the window was on the wall opposite the foot or head of the bed.

Bar chart showing the side of the bed against a wall and the side of the bed I sleep on.
                 bed side
bed touching wall Left Right
            Left     1     1
            None     6     4
            Right    1     2

Most of the time the side of the bed isn’t touching a wall, and in these cases I tend to sleep on the left side of the bed.

Here is the code I wrote to produce the plots:

# Analyse side of the bed I sleep on
# John L. Godlee (johngodlee@gmail.com)
# Last updated: 2025-10-26

# Packages
library(ggplot2)

# Import data
dat <- read.csv("./bed_position.csv")

# Filter to double beds only (not single)
dat_fil <- dat[dat$bed_type == "double",]

# Recode side of bed
dat_fil$bed_side <- factor(dat_fil$bed_side, 
  levels = c("left", "right"), 
  labels = c("Left", "Right"))

# Recode side of door and window relative to bed
side_lev <- c("left", "right", "foot-left", "foot-right", "head-left", "head-right")
side_lab = c("Left", "Right", "Foot-Left", "Foot-Right", "Head-Left", "Head-Right")

dat_fil$door_side <- factor(dat_fil$door_side,
  levels = side_lev, labels = side_lab)

dat_fil$window_side <- factor(dat_fil$window_side,
  levels = side_lev, labels = side_lab)

dat_fil$door_simpl <- gsub(".*-", "", dat_fil$door_side)
dat_fil$window_simpl <- gsub(".*-", "", dat_fil$window_side)

# Recode side of bed touching wall
bed_wall_touch_list <- strsplit(dat_fil$bed_wall_touch, ";")
dat_fil$bed_wall_touch <- unlist(lapply(bed_wall_touch_list, function(x) {
  paste(paste0(toupper(substring(x, 1, 1)), substring(x, 2)), collapse = ";")
}))
dat_fil$bed_wall_touch_simpl <- gsub("Head;?", "", dat_fil$bed_wall_touch)
dat_fil$bed_wall_touch_simpl[dat_fil$bed_wall_touch_simpl == ""] <- "None" 
dat_fil$bed_wall_touch_simpl <- factor(dat_fil$bed_wall_touch_simpl,
  levels = c("Left", "None", "Right"))

# Create a colour palette for left- and right-side of bed
bed_side_pal <- c(
  "Left" = "#5AB4AC",
  "Right" = "#D8B365")

# Tally of side of bed
bed_side_table <- table(dat_fil$bed_side)
sink("./out/bed_side_table.txt")
print(bed_side_table)
sink()

bed_side_bar <- ggplot(dat_fil, 
  aes(x = bed_side, fill = bed_side)) +
  geom_bar(colour = "black") +
  scale_fill_manual(name = "Bed side", values = bed_side_pal) + 
  labs(
    x = "Bed side", 
    y = "Count") + 
  theme_classic()
ggsave(bed_side_bar, width = 6, height = 3.5, 
  file = "./img/bed_side_bar.png")

# Compare side of bed and door side relative to bed
door_simpl_table <- table(
  "door position" = dat_fil$door_simpl, 
  "bed side" = dat_fil$bed_side)
sink("./out/door_simpl_table.txt")
print(door_simpl_table)
sink()

door_simpl_bar <- ggplot(dat_fil, 
  aes(x = door_simpl, fill = bed_side)) +
  geom_bar(position = "dodge", colour = "black") +
  scale_fill_manual(name = "Bed side", values = bed_side_pal) + 
  labs(
    x = "Door side (relative to bed)", 
    y = "Count") + 
  theme_classic()
ggsave(door_simpl_bar, width = 6, height = 3.5, 
  file = "./img/door_simpl_bar.png")

# Compare side of bed and window side relative to bed
window_simpl_table <- table(
  "window position" = dat_fil$window_simpl, 
  "bed side" = dat_fil$bed_side)
sink("./out/window_simpl_table.txt")
print(window_simpl_table)
sink()

window_simpl_bar <- ggplot(dat_fil, 
  aes(x = window_simpl, fill = bed_side)) +
  geom_bar(position = "dodge", colour = "black") +
  scale_fill_manual(name = "Bed side", values = bed_side_pal) + 
  labs(
    x = "Window side (relative to bed)", 
    y = "Count") + 
  theme_classic()
ggsave(window_simpl_bar, width = 6, height = 3.5, 
  file = "./img/window_simpl_bar.png")

# Compare side of bed and side of bed touching a wall
bed_wall_table <- table(
  "bed touching wall" = dat_fil$bed_wall_touch_simpl, 
  "bed side" = dat_fil$bed_side)
sink("./out/bed_wall_table.txt")
print(bed_wall_table)
sink()

bed_wall_bar <- ggplot(dat_fil, 
  aes(x = bed_wall_touch_simpl, fill = bed_side)) +
  geom_bar(position = "dodge", colour = "black") +
  scale_fill_manual(name = "Bed side", values = bed_side_pal) + 
  labs( 
    x = "Wall touched by bed", 
    y = "Count") +
  theme_classic()
ggsave(bed_wall_bar, width = 6, height = 3.5, 
  file = "./img/bed_wall_bar.png")