将行分散到R中的列中

时间:2018-11-16 20:02:32

标签: r tidyverse tidyr

我有两列:一列包含变量的名称,一列包含它们各自的值。只是两个变量,每个变量都有三个观察值,如下面的示例所示:

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 执行此操作,但未成功。有什么想法吗?

2 个答案:

答案 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)