r - Dplyr 数据框操作
问题描述
我有一个数据框。
# Input dataframe
Input <- data.frame(Date = as.Date(c(12001, 12002, 12003, 12001, 12002, 14000), origin = "1970-01-01"),
Model = as.factor(c("A","A","A","B","B","B")),
Cu = c(2,4,3,54,39,41),
Pb = c(9,10,7,22,25,19))
我必须使用一组dpylr 函数(允许使用管道 %>%)将结构转换为下面的输出示例。
# Output dataframe
Output <- data.frame(Date = as.Date(c(12001, 12002), origin = "1970-01-01"),
Cu_A = c(2,4),
Cu_B = c(54,39),
Pb_A = c(9,10),
Pb_B = c(22,25))
注意:因子列现在已成为数字列名称的一部分。此外,模型 A 和模型 B 之间不常见的日期不会出现在输出中(半连接)。解决方案必须是一组 dplyr 函数,因为它将用于创建响应式 Shiny 数据帧。
解决方案
我们可以只保留每个日期的一部分,Model
并以宽格式获取数据。
library(dplyr)
Input %>%
group_by(Date) %>%
filter(n_distinct(Model) == n_distinct(.$Model)) %>%
tidyr::pivot_wider(names_from = Model, values_from = c(Cu, Pb))
# Date Cu_A Cu_B Pb_A Pb_B
# <date> <dbl> <dbl> <dbl> <dbl>
#1 2002-11-10 2 54 9 22
#2 2002-11-11 4 39 10 25
推荐阅读
- sql-server-2014 - 在列中使用逗号批量加载导致截断错误
- mysql - 选择 COUNT 个非零单元 mysql
- javascript - 防止两个函数异步运行 - JavaScript
- sql - 通过聚合选择组上的整行
- c# - 如何确认我确实要在 c# 中禁用网络适配器?
- javascript - jquery 无法处理 ajax 加载的内容
- sql - 基于条件的单个查询的单个或多个搜索
- javafx - 如何在 JavaFX TreeTableView 中设置行之间的空间?
- java - ${*.version} 对于 Maven POM 文件中的依赖项是什么意思?
- sql-server - 调试 SQL Server 2012 存储过程 - 无法逐行进入代码