r - Pivot_wider 和 Group 同时?
问题描述
我有一个看起来像这样的大数据框:
Location Dttm Parameter Unit Value
1 Airport 2018-01-01 12:00:00 Wind Direction deg 60
2 Airport 2018-01-01 12:00:00 Wind Speed m/sec 3.45
显然还有更多的行,我只是展示数据的一个例子。我需要旋转数据,以便有一个风向和风速列。但是当我运行 pivot_wider 函数时,我会得到这样的结果:
Location Dttm Unit Wind Direction Wind Speed
1 Airport 2018-01-01 12:00:00 deg 60 NULL
2 Airport 2018-01-01 12:00:00 m/sec NULL 3.45
我尝试了各种 group_by 方法,但没有找到任何可以让我得到我真正需要的东西,那就是:
Location Dttm Wind Direction Wind Speed
1 Airport 2018-01-01 12:00:00 60 3.45
我认为如果我将 id_cols 设置为 Dttm,pivot_wider 会为我执行此操作,但这也不起作用。甚至不知道如何真正用谷歌搜索这个解决方案,所以任何帮助表示赞赏!
解决方案
我们可以Unit
在执行之前删除该列pivot_wider
library(dplyr)
library(tidyr)
df1 %>%
select(-Unit) %>%
pivot_wider(names_from = Parameter, values_from = Value)
# A tibble: 1 x 4
# Location Dttm `Wind Direction` `Wind Speed`
# <chr> <dttm> <dbl> <dbl>
#1 Airport 2018-01-01 12:00:00 60 3.45
O 指定id_cols
参数pivot_wider
(如@IceCreamToucan 所示)
df1 %>%
pivot_wider(id_cols = -Unit, names_from = Parameter, values_from = Value)
如果该组有重复的行,请在该组之前为该组创建一个序列列pivot_wider
df1 %>%
group_by(Parameter) %>%
mutate(rn = row_number()) %>%
pivot_wider(id_cols = -Unit, names_from = Parameter, values_from = Value) %>%
select(-rn)
数据
df1 <- structure(list(Location = c("Airport", "Airport"), Dttm = structure(c(1514826000,
1514826000), class = c("POSIXct", "POSIXt"), tzone = ""), Parameter = c("Wind Direction",
"Wind Speed"), Unit = c("deg", "m/sec"), Value = c(60, 3.45)), row.names = c("1",
"2"), class = "data.frame")
推荐阅读
- c# - C# 实体框架分页子项包括
- python - 在我的数据框中找到值的更快方法
- migration - Jira API - 如何将自定义字段添加到现有问题
- jenkins - 防止 GitHub Webhook 从标签推送中发送
- c - 程序在 GDB 中运行,但如果正常启动会引发分段错误
- azure - 如何使用 Azure AD (oauth2) 保护 Spring Boot 应用并调用 Devops REST API(由 Oauth2 保护)
- c# - C#中“Get-Counter”的类似物
- python-3.x - 在 Python 中保存数据框
- javascript - 在按钮单击时停止函数执行 React Native/Redux
- angular - removeAllListeners() 根本不删除监听器?(Socket.IO)