2016-05-11 2 views
1

Я заинтересован в переустановке data.frame в R. Bare со мной, я спотыкаюсь по воспроизводимому примеру.Как я могу переупорядочить мои data.frame

У меня есть номинальная переменная, которая может иметь 1 из двух значений. В настоящее время эта номинальная переменная является столбцом. Вместо этого я хотел бы иметь два столбца, представляющие два значения, которые может иметь эта номинальная переменная. Вот кадр данных exmample. S является номинальным переменным со значениями Т и С.

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) 

Я предпочел бы кадр данных, который выглядел как этого

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) 

Я уверен, что есть способ использовать mutate или, возможно, tidyr но Я не уверен, какой лучший маршрут и кадр данных, который я хотел бы переустановить, довольно большой.

Спасибо!

+2

Похоже 'tidyr' может быть использован, чтобы сделать' распространяться (MYDATA, s, б) ', чтобы получить то, что вы хотите , Я что-то упускаю? – Gopala

ответ

3

вы хотите 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 
3

Как насчет unstack(mydata, b~s):

c t 
1 23 11 
2 5 6 
3 16 12 
4 3 41 
Смежные вопросы