gpt4 book ai didi

r - 使用 tidyverse 到 "unnest"小标题内的 data.frame 列

转载 作者:行者123 更新时间:2023-12-04 13:10:35 25 4
gpt4 key购买 nike

我正在处理一些从 www 调用返回的数据,该调用 jsonliteas_tibble以某种方式转换成 data.frame柱子。
result数据有一个 Id整数列和 ActionCode带有两个内部列的 data.frame 列。这些在控制台中显示为:

> result
# A tibble: 117 x 2
Id ActionCode$Code $Name
<int> <chr> <chr>
1 A1 First Code
2 A2 Second Code
3 A3 Third Code
4 A4 Fourth Code
...
这可以通过 str() 检查作为:
> result %>% str()
tibble [117 x 2] (S3: tbl_df/tbl/data.frame)
$ Id : int [1:117] 1 2 3 4 ...
$ ActionCode:'data.frame': 117 obs. of 2 variables:
..$ Code: chr [1:117] "A1" "A2" "A3" "A4" ...
..$ Name: chr [1:117] "First Code" "Second Code" "Third Code" "Fourth Code" ...
我见过例如 https://tibble.tidyverse.org/articles/types.html那种 data.frame列是完全合法的,但我正在努力研究如何从整洁的 dplyr 管道访问此列中的数据 - 例如我不能 select(ActionCode$Code)有没有办法在 dplyr 中使用这些列管道?或者有没有办法以某种方式展平这些列,类似于 unnest可用于 list列(尽管我在这里意识到我没有创建额外的行 - 我只是扁平化列层次结构)。
即我试图找到一个函数 foo可以输出:
> result %>% foo() %>% str()
tibble [117 x 2] (S3: tbl_df/tbl/data.frame)
$ Id : int [1:117] 1 2 3 4 ...
$ Code: chr [1:117] "A1" "A2" "A3" "A4" ...
$ Name: chr [1:117] "First Code" "Second Code" "Third Code" "Fourth Code" ...

我无法提供 www 调用作为示例,但作为一个工作示例,我认为我所看到的数据类型类似于:
sample_data <- tibble(
Id = 1:10,
ActionCode = tibble(
Code = paste0("Id", 1:10),
Name = paste0("Name ", 1:10),
)
)

最佳答案

重新转换为 data.framedo.call展平列

library(dplyr)
library(stringr)
do.call(data.frame, sample_data) %>%
rename_at(vars(starts_with('ActionCode')), ~
str_remove(., 'ActionCode\\.')) %>%
as_tibble
-输出
# A tibble: 10 x 3
# Id Code Name
# <int> <chr> <chr>
# 1 1 Id1 Name 1
# 2 2 Id2 Name 2
# 3 3 Id3 Name 3
# 4 4 Id4 Name 4
# 5 5 Id5 Name 5
# 6 6 Id6 Name 6
# 7 7 Id7 Name 7
# 8 8 Id8 Name 8
# 9 9 Id9 Name 9
#10 10 Id10 Name 10

关于r - 使用 tidyverse 到 "unnest"小标题内的 data.frame 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65815651/

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