R将一列中的数值向量拆分为多列

时间:2019-07-09 19:30:37

标签: r dataframe

我有一个数据框,该数据框的一列中有数字矢量,并且想将该列拆分为多列。以下是带有两个列dfa的数据帧b的示例。每列由xy值的向量组成。我想将数值向量分成两列xy。该示例只有两列ab,但可以有更多列。

到目前为止,我发现可以使用tidyr:基于单独的字符串的向量,但不能使用数字向量。对于基于字符串的向量,本文也提出了类似的问题。 R Split a column containing a vector into multiple columns。在这篇文章中提出了另一个直接相关的问题。 https://community.rstudio.com/t/split-a-column-each-element-is-a-vector-to-multiple-columns/14009/6。我想知道是否有更好的方法。

df <- tribble(
  ~a, ~b,
  c(1.2, 2.3), c(1.3, 2.4),
  c(3.4, 4.5), c(5.6, 7.8))

预期的数据框将是具有四列的数据框。

a.x   a.y   b.x   b.y
1.2   2.3   1.3   2.4
3.4   4.5   5.6   7.8

2 个答案:

答案 0 :(得分:0)

这有点难看,但是应该可以工作:

df %>% 
  mutate_all(~ map_chr(., paste, collapse = ",")) %>% 
  separate(a, into = c("a.x", "a.y"), sep = ",") %>% 
  separate(b, into = c("b.x", "b.y"), sep = ",") %>% 
  mutate_all(as.numeric)

答案 1 :(得分:0)

我在这里借用马库斯的答案。

as.data.frame(lapply(df, function(x) t(do.call(cbind, x))))