我有兴趣在R中重新安排一个data.frame。跟我一起,我偶然发现了一个可重复的例子。
我有一个名义变量,可以有两个值中的一个。目前,这个名义变量是一列。相反,我希望有两列,代表这个名义变量可以具有的两个值。这是一个简单的数据框架。 S
是名义变量,其值为T和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)
我宁愿拥有一个看起来像这样的数据框
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
,但我不确定最佳路线是什么,我想重新安排的数据框非常大。
答案 0 :(得分:3)
unstack(mydata, b~s)
:
c t
1 23 11
2 5 6
3 16 12
4 3 41
答案 1 :(得分: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