Используя R, как дублировать содержимое фрейма данных на основе строк другого? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть 2 кадра данных. В DF A у меня есть идентификационный номер. В df B у меня 52 строки, которые являются датами.

Для каждой идентификационной цифры в df A я хотел бы создать новую запись, которая имеет этот идентификационный номер для каждой даты.

Так, например, идентификатор 001 будет появляться только один раз в df A, однако теперь он будет появляться 52 раза, один раз для каждой даты в df B.

Как мне это сделать?

Я создал 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)

Идентификатор пользователя df (df A) - это статический список из файла Excel, который я извлек с помощью readxl.

так как у меня 8074 идентификатора пользователя и 52 даты. Я ожидал бы создать новый df, содержащий 419 848 строк.

1 Ответ

0 голосов
/ 12 июня 2019

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...