library(reshape2)

A simplest case:

df <- data.frame(
  treatment = rep(c("A", "B"), each = 5),
  replicate = rep(LETTERS[3:7], times = 2),
  value = seq(1, 10)
)
df$treatment <- as.factor(df$treatment)
df$replicate <- as.factor(df$replicate)

knitr::kable(df)

knitr::kable(
  reshape2::dcast(
    df,
    treatment ~ replicate,
    value.var = "value"
  )
)

Now with another column before treatment:

df <- data.frame(
  person = rep(c("Jack", "Jim"), each = 4),
  treatment = rep(c("A", "B"), each = 2, times = 2),
  replicate = rep(c("C", "D"), times = 4),
  value = seq(1, 8)
)
df
df$person <- as.factor(df$person)
df$treatment <- as.factor(df$treatment)
df$replicate <- as.factor(df$replicate)

knitr::kable(df)

knitr::kable(
  reshape2::dcast(
    df,
    person + treatment ~ replicate,
    value.var = "value"
  )
)


richelbilderbeek/ribir documentation built on March 19, 2021, 3:55 a.m.