How to convert the result of xtabs() into dataframe in R?

You can just use as.data.frame.matrix(xa)

# output
       A B C D
First  6 3 0 0
Fourth 0 2 0 5
Second 0 0 5 0
Third  0 0 0 1

## or
df_b <- as.data.frame.matrix(xa)[unique(df_a$ItemName), ]
data.frame(ItemName = row.names(df_b), df_b, row.names = NULL)
# output
  ItemName A B C D
1    First 6 3 0 0
2   Second 0 0 5 0
3    Third 0 0 0 1
4   Fourth 0 2 0 5

Without using xtabs you can do something like this:

df %>%
 dplyr::group_by(ItemName, Feature) %>%
 dplyr::summarise(Sum=sum(Amount, na.rm = T)) %>%
 tidyr::spread(Feature, Sum, fill=0) %>%
 as.data.frame()

This will transform as you require and it stays as a data.frame

Or, you can just as.data.frame(your_xtabs_result) and that should work too

Tags:

R

Dataframe