gpt4 book ai didi

r - 将列表转换为数据框

转载 作者:行者123 更新时间:2023-12-04 10:44:08 24 4
gpt4 key购买 nike

我正在尝试将以下列表转换为数据框。

我尝试过 melt/cast、ldply、unlist 等,但似乎无法获得预期的输出。

非常感谢!

df <- list(
name=rep(c(11,12), each=1),
value=rnorm(2),
name=rep(c(13,14), each=1),
value=rnorm(2)
)
df

我想在数据框中输出以下内容:

name  value
11 1.187
12 0.691
13 0.452
14 0.898

最佳答案

一个选项是堆叠成一个两列的data.frame,然后展开它回到“宽”格式

library(tidyverse)
enframe(df) %>%
unnest(value) %>%
group_by(name) %>%
mutate(rn = row_number()) %>%
spread(name, value) %>%
select(-rn)
# A tibble: 4 x 2
# name value
# <dbl> <dbl>
#1 11 -0.484
#2 12 -0.110
#3 13 -0.328
#4 14 0.0737

或者另一种选择是使用 tidyr 的开发版本中的 pivot_longer

df %>% 
set_names(str_c(names(.), "_", cumsum(names(.) == "name"))) %>%
as_tibble %>%
mutate(rn = row_number()) %>%
pivot_longer(-rn, names_to =c(".value", "group"), names_sep = '_') %>%
select(name, value)

或者使用base R

reshape(transform(stack(df), rn = ave(seq_along(ind), ind,
FUN = seq_along)), idvar = 'rn', direction = 'wide', timevar = 'ind')

关于r - 将列表转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57811760/

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