r - 数据帧中的未嵌套数据帧 - R
问题描述
我有一个dataframe
4 列,最后一列dataframe
本身就是一个,如下所示。
我想将此数据框取消嵌套为具有 3 个列的新数据框:
tagname, localDateTime, Value
我可以使用一个简单的语句作为
DF_unnest <- unnest(DF, dataList)
outTagValues = DT_unnest%>%
select(tagname,localDateTime,value)
上面的陈述很简洁,就像一个魅力,但我想知道是否有另一种不涉及函数 "unnest" 的方法。我在 Spotfire 中遇到问题,我们无法升级到tidyr
上述语句有效的最新版本,但在以前版本的tidyr
.
这里是dput
:
structure(list(entityInstanceID = c(NA, NA), attributeName = c(NA,
NA), tagname = c("LU_HIST_SVR.C874_1_DPTSlope", "LU_HIST_SVR.C874_1_DPTTransSlope"
), dataList = list(structure(list(timeMillis = c(1591050080000,
1591050252000, 1591050425000, 1591050598000, 1591050771000, 1591050944000,
1591051116000, 1591051289000, 1591051462000, 1591051635000, 1591051808000,
1591051980000, 1591052153000, 1591052326000, 1591052499000, 1591052672000,
1591052844000, 1591053017000, 1591053190000, 1591053363000, 1591053536000
), localDateTime = c("2020-06-01T22:21:20", "2020-06-01T22:24:12",
"2020-06-01T22:27:05", "2020-06-01T22:29:58", "2020-06-01T22:32:51",
"2020-06-01T22:35:44", "2020-06-01T22:38:36", "2020-06-01T22:41:29",
"2020-06-01T22:44:22", "2020-06-01T22:47:15", "2020-06-01T22:50:08",
"2020-06-01T22:53:00", "2020-06-01T22:55:53", "2020-06-01T22:58:46",
"2020-06-01T23:01:39", "2020-06-01T23:04:32", "2020-06-01T23:07:24",
"2020-06-01T23:10:17", "2020-06-01T23:13:10", "2020-06-01T23:16:03",
"2020-06-01T23:18:56"), value = c(-44.60666, 54.13578, 117.89097,
82.92964, -66.7729, -114.94801, 54.97848, 91.05632, -8.16897,
-71.04217, -88.72301, -139.31139, -50.58294, -8.78567, -8.39966,
-54.48525, -110.99734, -25.96911, 100.79548, -81.94934, -196.21104
), quality = c("GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD",
"GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD",
"GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD")), class = "data.frame", row.names = c(NA,
21L)), structure(list(timeMillis = c(1591050080000, 1591050252000,
1591050425000, 1591050598000, 1591050771000, 1591050944000, 1591051116000,
1591051289000, 1591051462000, 1591051635000, 1591051808000, 1591051980000,
1591052153000, 1591052326000, 1591052499000, 1591052672000, 1591052844000,
1591053017000, 1591053190000, 1591053363000, 1591053536000),
localDateTime = c("2020-06-01T22:21:20", "2020-06-01T22:24:12",
"2020-06-01T22:27:05", "2020-06-01T22:29:58", "2020-06-01T22:32:51",
"2020-06-01T22:35:44", "2020-06-01T22:38:36", "2020-06-01T22:41:29",
"2020-06-01T22:44:22", "2020-06-01T22:47:15", "2020-06-01T22:50:08",
"2020-06-01T22:53:00", "2020-06-01T22:55:53", "2020-06-01T22:58:46",
"2020-06-01T23:01:39", "2020-06-01T23:04:32", "2020-06-01T23:07:24",
"2020-06-01T23:10:17", "2020-06-01T23:13:10", "2020-06-01T23:16:03",
"2020-06-01T23:18:56"), value = c(-29.50907, 133.56741, 247.6122,
-391.21768, -118.63472, 67.12173, 235.18224, -275.67072,
223.91306, -28.00732, -368.20529, 250.14159, -361.28854,
408.80832, -115.09288, -453.42191, 260.57016, 261.98938,
-148.97125, -393.78149, 87.16415), quality = c("GOOD", "GOOD",
"GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD",
"GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD", "GOOD",
"GOOD", "GOOD", "GOOD")), class = "data.frame", row.names = c(NA,
21L)))), row.names = 3:4, class = "data.frame")
解决方案
我不知道这是否适用于您的版本tidyr
,但这可以在我的机器上提供您想要的内容:
DF %>%
select(tagname, dataList) %>%
deframe() %>%
bind_rows(.id = "tagname") %>%
select(-timeMillis)
推荐阅读
- dataframe - 在同一个 Spark 作业中设置每个 shuffle 的 shuffle 分区数
- java - 用于后端 Java 服务的 Google Oauth
- input - 多个输出到单个列表输入 - 在 Nextflow 中合并 BAM 文件
- python - 如何实现 PSO 到 SVM?
- postgresql - 基于视图和表的物化视图 - 如何?
- python - 如何减少专用 GPU 内存的使用并为 CUDA 和 Pytorch 使用共享 GPU 内存
- docker - 启动现有的 Docker 容器还是总是运行一个新的容器更好(并手动删除旧的)?
- python - 在 Ubuntu 中使用 gunicorn 创建的自定义服务抛出错误,但仅 Gunicorn 功能就可以正常工作
- r - 计算每列中的条目数,结果在数据框中
- r - 当在另一行中发现元素逗号分隔时合并行