r - 如何使用 R 中的 tidyverse 将列表对象制作为长格式的数据框
问题描述
dd <- list(c("2020-1-2","SDF","fff,33"),
c("2020-1-3","KKK","ffd,23","fffdf,23","ssfds,43"))
dd
# [[1]]
# [1] "2020-1-2" "SDF" "fff,33"
# [[2]]
# [1] "2020-1-3" "KKK" "ffd,23" "fffdf,23" "ssfds,43"
ddtarget <- data.frame(date= c("2020-1-2","2020-1-3","2020-1-3","2020-1-3"),
category = c("SDF","KKK","KKK","KKK"),
element = c("fff,33","ffd,23","fffdf,23","ssfds,43"))
ddtarget
# date category element
# 1 2020-1-2 SDF fff,33
# 2 2020-1-3 KKK ffd,23
# 3 2020-1-3 KKK fffdf,23
# 4 2020-1-3 KKK ssfds,43
我想用 tidyverse (例如 map() 或类似函数)将 dd 转换为 ddtarget,但我自己做不到。谁能帮我?
解决方案
假设前两列的长度始终为 1,而第三列是所有剩余元素,这是一种使用map_df
purrr::map_df(dd,~tibble(date = .x[1], category = .x[2],element = .x[3:length(.x)]))
# A tibble: 4 x 3
# date category element
# <chr> <chr> <chr>
#1 2020-1-2 SDF fff,33
#2 2020-1-3 KKK ffd,23
#3 2020-1-3 KKK fffdf,23
#4 2020-1-3 KKK ssfds,43
推荐阅读
- three.js - 如何使用 Htc Vive pro 正确访问 VR 网站?
- javascript - 枚举 Noesis Javascript.NET 中的所有全局对象
- sql - 很难理解 SQL 查询
- pyspark - 如何将 bigquery 表加载到 dataproc 集群
- javascript - 日期选择器和自定义显示格式
- javascript - SASS - 重置最后呈现的样式并重写样式
- android - 如果使用通过转换器的 2 路数据绑定,则不会生成 XML 布局的绑定实现
- apache-nifi - 如何在 Apache nifi 中配置 convertrecord 处理器,以便将 JSON 转换为 AVRO 格式
- c# - 在 C# 中获取组合框的值和键时出错
- python - pandas 中根据条件过滤某些数据行的解决方案