8

I have a dataframe in R with three variables named for example df$V1, df$V2, df$V3. df$V1 and df$V2 are both factors, while df$V3 is numeric.

df <- data.frame(
  V1 = letters[1:4],
  V2 = rep(LETTERS[1:3], each = 4),
  V3 = 1:12
)

I am looking for a way to create a table that contains the values in df$V3, with df$V1 as the rows, and df$V2 as the columns.

I tried variations on table, but didn't get anywhere. Perhaps someone could help, Thanks in advance, Davy.

Richie Cotton
  • 118,240
  • 47
  • 247
  • 360
Davy Kavanagh
  • 4,809
  • 9
  • 35
  • 50

2 Answers2

20

This is an alternative to table:

xtabs(V3 ~ V1 + V2, df)
Aaron left Stack Overflow
  • 36,704
  • 7
  • 77
  • 142
7

As mentioned by ran2, you can use the reshape package. Here is an example:

df <- data.frame(V1 = factor(sample(letters[1:5],100,replace=TRUE)),
                 V2 = factor(toupper(sample(letters[1:5],100,replace=TRUE))),
                 V3 = runif(100))
library(reshape)
cast(df, V1 ~ V2, mean)
nullglob
  • 6,903
  • 1
  • 29
  • 31