首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dplyr数据处理

Dplyr数据处理
EN

Stack Overflow用户
提问于 2020-08-29 03:36:18
回答 2查看 63关注 0票数 0

我有一份数据。

代码语言:javascript
复制
# 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函数的单集(管道允许%>%)将结构转换为下面的输出示例。

代码语言:javascript
复制
# 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函数,因为它将用于创建反应性的闪亮数据格式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-29 04:00:25

我们只能保留每个Model的一部分的日期,并以宽格式获取数据。

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2020-08-29 03:57:05

代码语言:javascript
复制
    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(.)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63643164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档