首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按组合并和扩展数据帧

按组合并和扩展数据帧
EN

Stack Overflow用户
提问于 2019-04-19 02:52:22
回答 1查看 38关注 0票数 0

假设我有一个这样的数据帧df

代码语言:javascript
复制
> df <- data.frame(ID = c("A","B","C"),
                 value = c(1,2,3))
> df
  ID value
1  A     1
2  B     2
3  C     3

我想通过添加一个包含一系列日期值的列Date来扩展df。应根据ID重复日期列。因此结果将如下所示:

代码语言:javascript
复制
> df_new
  ID value  Date
1  A     1  2017-4-1
2  A     1  2017-4-2
3  A     1  2017-4-3
1  B     2  2017-4-1
2  B     2  2017-4-2
3  B     2  2017-4-3
1  C     3  2017-4-1
2  C     3  2017-4-2
3  C     3  2017-4-3

我发现这个post与我的问题相似,但解决方案不适用于我的问题。下面是我尝试使用tidyr的一些东西:

代码语言:javascript
复制
date <- c(seq(as.Date('2017-4-1'),as.Date('2017-4-3'), by = "days"))

df_new <- df %>% group_by(ID) %>% 
                 mutate(Date = date)

Error: Column `Date` must be length 1 (the group size), not 3

有什么想法吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-19 02:55:08

代码语言:javascript
复制
df %>% left_join(expand.grid(ID = unique(df$ID), date = date))
# Joining, by = "ID"
#   ID value       date
# 1  A     1 2017-04-01
# 2  A     1 2017-04-02
# 3  A     1 2017-04-03
# 4  B     2 2017-04-01
# 5  B     2 2017-04-02
# 6  B     2 2017-04-03
# 7  C     3 2017-04-01
# 8  C     3 2017-04-02
# 9  C     3 2017-04-03

expand.grid是生成所有组合的经典base函数。您可以将其替换为tidyr::crossing,以获得相同的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55752168

复制
相关文章

相似问题

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