Christopher
Christopher

Reputation: 189

How to re-arrange a data.frame

I am interested in re-arranging a data.frame in R. Bear with me a I stumble through a reproducible example.

I have a nominal variable which can have 1 of two values. Currently this nominal variable is a column. Instead I would like to have two columns, representing the two values this nominal variable can have. Here is an exmample data frame. S is the nominal variable with values T and C.

n <- c(1,1,2,2,3,3,4,4)
s <- c("t","c","t","c","t","c","t","c")
b <- c(11,23,6,5,12,16,41,3)
mydata <- data.frame(n, s, b)

I would rather have a data frame that looked like this

n.n <- c(1,2,3,4)
trt <- c(11,6,23,41)
cnt <- c(23,5,16,3)
new.data <- data.frame(n.n, trt, cnt)

I am sure there is a way to use mutate or possibly tidyr but I am not sure what the best route is and my data frame that I would like to re-arrange is quite large.

Upvotes: 1

Views: 108

Answers (2)

triddle
triddle

Reputation: 1231

you want spread:

library(dplyr)
library(tidyr)    
new.data <- mydata %>% spread(s,b)

  n  c  t
1 1 23 11
2 2  5  6
3 3 16 12
4 4  3 41

Upvotes: 3

fishtank
fishtank

Reputation: 3728

How about unstack(mydata, b~s):

   c  t
1 23 11
2  5  6
3 16 12
4  3 41

Upvotes: 3

Related Questions