首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据中的重复行

数据中的重复行
EN

Stack Overflow用户
提问于 2021-06-16 12:07:02
回答 1查看 59关注 0票数 0

我有一个data.frame,看起来是这样的:

代码语言:javascript
复制
df <- data.frame(id=c("001","002","003","004"),year=c(2015,2015,2015,2015),
                 x1=c(15,20,25,30),x2=c(1,2,3,4))
    
id   year   x1   x2
001  2015   15   1
002  2015   20   2
003  2015   25   3
004  2015   30   4

我希望复制idx1x2,但将year更改为以类似于以下内容的data.frame结束:

代码语言:javascript
复制
id   year   x1   x2
001  2015   15   1
002  2015   20   2
003  2015   25   3
004  2015   30   4
001  2016   15   1
002  2016   20   2
003  2016   25   3
004  2016   30   4

我能做到这一点

代码语言:javascript
复制
df2 <- df %>%
  mutate(year = 2016)

df3 <- rbind(df, df2)

但是我想知道是否有一种更直观的方法,这样我就可以为20+年创建副本,而不需要多个新的data.frames

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-16 12:09:53

代码语言:javascript
复制
df <- data.frame(id=c("001","002","003","004"),year=c(2015,2015,2015,2015),
                 x1=c(15,20,25,30),x2=c(1,2,3,4))
library(tidyr)

df %>% complete(nesting(id, x1, x2), year = 2015:2016)
#> # A tibble: 8 x 4
#>   id       x1    x2  year
#>   <chr> <dbl> <dbl> <dbl>
#> 1 001      15     1  2015
#> 2 001      15     1  2016
#> 3 002      20     2  2015
#> 4 002      20     2  2016
#> 5 003      25     3  2015
#> 6 003      25     3  2016
#> 7 004      30     4  2015
#> 8 004      30     4  2016

在额外的几年里,你只需要根据你的需要改变2015:2016。您还可以使用seq在这里使用动态引用。

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

https://stackoverflow.com/questions/68002356

复制
相关文章

相似问题

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