使用R,如何基于另一个行复制一个数据帧的内容?

时间:2019-06-11 21:17:25

标签: r dataframe dplyr analytics tidyverse

我有2个数据帧。在df A中,我有一个ID号。在df B中,我有52行,即日期。

对于df A中的每个ID数字,我想创建一个新记录,其中每个日期都有该ID号。

例如,ID 001在df A中只会出现一次,但是现在将出现52次,对于df B中的每个日期都会出现一次。

我该怎么做?

我创建了一个包含用户ID的df,还创建了另一个包含日期的df。我无法加入他们,因为没有可以加入的领域。我通过,我需要遍历DF A,但不知道如何。

这是我创建日期df(df B)的方式

Dates <- data.frame(WCSTART = seq(as.Date("2018-01-01"), by = "weeks", length.out = 52), 
                    WCEND = seq(as.Date("2018-01-01"), by = "weeks", length.out = 52) + 6)

用户ID df(df A)是我使用readxl提取的excel文件中的静态列表。

因为我有8074个用户ID和52个日期。我希望创建一个包含419,848行的新df。

1 个答案:

答案 0 :(得分:0)

使用merge()进行合并(也称为联接),而无需指定任何联接变量,所有内容将根据需要进行复制。

> DfA <- data.frame(id=c("001","002","003"))
> DfA
   id
1 001
2 002
3 003

> DfB <- data.frame(dates=c("2018-01-01","2018-01-02","2018-01-03"))
> DfB
       dates
1 2018-01-01
2 2018-01-02
3 2018-01-03

> output <- merge(DfA,DfB)
> output
   id      dates
1 001 2018-01-01
2 002 2018-01-01
3 003 2018-01-01
4 001 2018-01-02
5 002 2018-01-02
6 003 2018-01-02
7 001 2018-01-03
8 002 2018-01-03
9 003 2018-01-03