gpt4 book ai didi

r - 转换具有不同数量元素的嵌套数据框

转载 作者:行者123 更新时间:2023-12-04 11:38:35 26 4
gpt4 key购买 nike

我有一个包含一列嵌套数据框的数据框,其中包含 1 或 2 列和 n 行。它在下面的示例中看起来像 df:

'data.frame':   3 obs. of  2 variables:
$ vector:List of 3
..$ : chr "p1"
..$ : chr "p2"
..$ : chr "p3"
$ lists :List of 3
..$ :'data.frame': 2 obs. of 2 variables:
.. ..$ n1: Factor w/ 2 levels "a","b": 1 2
.. ..$ n2: Factor w/ 2 levels "1","2": 1 2
..$ :'data.frame': 1 obs. of 1 variable:
.. ..$ n1: Factor w/ 1 level "d": 1
..$ :'data.frame': 1 obs. of 2 variables:
.. ..$ n1: Factor w/ 1 level "e": 1
.. ..$ n2: Factor w/ 1 level "3": 1

df 可以像这样重新创建:
v <- c("p1", "p2", "p3")
l <- list(data.frame(n1 = c("a", "b"), n2 = c("1", "2")), data.frame(n1 = "d"), data.frame(n1 = "e", n2 = "3"))
df <- as.data.frame(cbind(v, l))

我想将其转换为如下所示的数据框:
[v] [n1] [n2]

p1 a 1

p1 b 2

p2 d NA

p3 e 3
  • n1 和 n2 在单独的列中
  • 如果第 i 行的数据帧有 n 行,则第 i 行的向量元素应重复 n 次
  • 如果 n1 或 n2 中没有内容,则应该有 NA

  • 我试过使用 tidyr::unnest 但出现以下错误
     unnest(df)
    Error: All nested columns must have the same number of elements.

    有没有人有更好的想法如何以所需的格式转换数据框?

    最佳答案

    使用 purrr::pmap_df , 在 df 的每一行内,我们结合vl合并为一个数据帧,然后将所有数据帧合并为一个数据帧。

    library(tidyverse)

    pmap_df(df, function(v,l) {
    data.frame(v,l)
    })

       v n1   n2
    1 p1 a 1
    2 p1 b 2
    3 p2 d <NA>
    4 p3 e 3

    关于r - 转换具有不同数量元素的嵌套数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47722233/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com