我有一份数据。
# 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函数,因为它将用于创建反应性的闪亮数据格式。
发布于 2020-08-29 04:00:25
我们只能保留每个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发布于 2020-08-29 03:57:05
library(tidyr)
library(dplyr)
Input %>% pivot_wider(names_from = Model, values_from = c(Cu, Pb),
names_sep = "_") %>% filter_at(vars(-Date), all_vars(!is.na(.)))https://stackoverflow.com/questions/63643164
复制相似问题