Как связать два столбца по строкам из двух разных фреймов данных? - PullRequest
1 голос
/ 20 марта 2019
#--------Get Sunday's from 2018-01-01 till today---------------------
d = seq(as.Date("2018-01-01"),Sys.Date(),by='day')
sundayList = d[weekdays(d)=='Sunday']
HolidayList = as.data.frame(sundayList)
colnames(HolidayList)[1] = "Holidays"

#---------Get Alternate saturdays 2nd and 4th------------------------
d = seq(as.Date("2018-01-01"),Sys.Date(),by='day')
saturdayList = d[weekdays(d)=='Saturday']
altSaturdayList = lapply(split(saturdayList, format(saturdayList, "%Y-%m")), function(x)
  na.omit(x[c(2,4)]))
altSaturdayList = as.data.frame(altSaturdayList)
altSaturdayList = gather(altSaturdayList)
altSaturdayList = subset(altSaturdayList,select = c(colnames(altSaturdayList)[2]))

До сих пор это работает, как и ожидалось, но я не могу связать два столбца так, чтобы иметь воскресенья и 2-й и 4-й субботы в одном кадре данных

HolidayList$Holidays = rbind(HolidayList$Holidays,altSaturdayList$value)

Любые комментарии кулучшить существующий код поможет.

Я получаю следующее сообщение об ошибке.

> HolidayList$Holidays = rbind(HolidayList$Holidays,altSaturdayList$value)
Error in `$<-.data.frame`(`*tmp*`, Holidays, value = c(17538, 17544, 17545,  : 
  replacement has 2 rows, data has 63
In addition: Warning message:
In rbind(HolidayList$Holidays, altSaturdayList$value) :
  number of columns of result is not a multiple of vector length (arg 2)

1 Ответ

1 голос
/ 20 марта 2019

Мы можем использовать bind_rows после того, как имена столбцов будут одинаковыми

library(dplyr)
bind_rows(HolidayList, set_names(altSaturdayList, "Holidays"))

Или с rbind

rbind(HolidayList, setNames(altSaturdayList, "Holidays"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...