我有一个如下所示的数据框:
a b
1 x 8
2 x 6
3 y 3
4 y 4
5 z 5
6 z 6
Run Code Online (Sandbox Code Playgroud)
我想把它变成这个:
x y z
1 8 3 5
2 6 4 6
Run Code Online (Sandbox Code Playgroud)
但是打电话
library(tidyr)
df <- data.frame(
a = c("x", "x", "y", "y", "z", "z"),
b = c(8, 6, 3, 4, 5, 6)
)
df %>% spread(a, b)
Run Code Online (Sandbox Code Playgroud)
回报
x y z
1 8 NA NA
2 6 NA NA
3 NA 3 NA
4 NA 4 NA
5 …Run Code Online (Sandbox Code Playgroud) 假设我有一个数据框,其中一列是一些重复值(日期,ID等).有没有办法将数据框转换为带有列的现在数据框而不是复制行?基本上我想要转置这样的东西:
col1 col2 col3
1 aa 30
2 aa 40
3 aa 10
1 bb 20
2 bb 12
3 bb 15
1 cc 40
2 cc 31
3 cc 12
Run Code Online (Sandbox Code Playgroud)
进入:
aa bb cc
1 30 20 40
2 40 12 31
3 10 15 12
Run Code Online (Sandbox Code Playgroud)
以下是一些代码,用于生成第一个数据框的示例:
a <- c(rep(1:10, 3))
b <- c(rep("aa", 10), rep("bb", 10), rep("cc", 10))
set.seed(123)
c <- sample(seq(from = 20, to = 50, by = 5), size = 30, replace = TRUE)
d <- …Run Code Online (Sandbox Code Playgroud)