我有两列:一列包含变量的名称,一列包含它们各自的值。只是两个变量,每个变量都有三个观察值,如下面的示例所示:
myplot(..., continuefunc=Sys.sleep(3))
问题是我需要将library(tidyverse)
tibble(
var = rep(letters[1:2],3),
vals = c(1:6)
) %>%
arrange(var)
# A tibble: 6 x 2
var vals
<chr> <int>
1 a 1
2 a 3
3 a 5
4 b 2
5 b 4
6 b 6
和a
分成几列,例如以下预期输出:
b
我尝试用# A tibble: 3 x 2
a b
<dbl> <dbl>
1 1 2
2 3 4
3 5 6
执行此操作,但未成功。有什么想法吗?
答案 0 :(得分:2)
您可以使用unstack
tbl <- tibble(
var = rep(letters[1:2],3),
vals = c(1:6)
) %>%
arrange(var)
unstack(tbl, vals ~ var)
# a b
#1 1 2
#2 3 4
#3 5 6
答案 1 :(得分:1)
按'var'分组后,我们需要一个序列列。它还将确保对于元素数量不同的组,其余值可以由选择值填充(默认情况下为NA
)
library(tidyverse)
tbl %>%
group_by(var) %>%
mutate(rn = row_number()) %>%
spread(var, vals) %>%
select(-rn)
# A tibble: 3 x 2
# a b
# <int> <int>
#1 1 2
#2 3 4
#3 5 6
tbl <- tibble(
var = rep(letters[1:2],3),
vals = c(1:6)
) %>%
arrange(var)