1. Compare and contrast the fill arguments to spread() and complete().

In spread(), the fill argument explicitly sets the value to replace NAs. In complete(), the fill argument also sets a value to replace NAs but it is named list, allowing for different values for different variables. Also, both cases replace both implicit and explicit missing values.

2. What does the direction argument to fill() do?

With fill, the direction determines whether NA values should be replaced by the previous non-missing value ("down") or the next non-missing value ("up").

LS0tDQp0aXRsZTogIk1pc3NpbmcgdmFsdWVzIg0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCi0tLQ0KDQojIyMgMS4gQ29tcGFyZSBhbmQgY29udHJhc3QgdGhlIGBmaWxsYCBhcmd1bWVudHMgdG8gYHNwcmVhZCgpYCBhbmQgYGNvbXBsZXRlKClgLg0KDQpJbiBgc3ByZWFkKClgLCB0aGUgZmlsbCBhcmd1bWVudCBleHBsaWNpdGx5IHNldHMgdGhlIHZhbHVlIHRvIHJlcGxhY2UgYE5Bc2AuIEluIGBjb21wbGV0ZSgpYCwgdGhlIGZpbGwgYXJndW1lbnQgYWxzbyBzZXRzIGEgdmFsdWUgdG8gcmVwbGFjZSBgTkFgcyBidXQgaXQgaXMgbmFtZWQgbGlzdCwgYWxsb3dpbmcgZm9yIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGRpZmZlcmVudCB2YXJpYWJsZXMuIEFsc28sIGJvdGggY2FzZXMgcmVwbGFjZSBib3RoIGltcGxpY2l0IGFuZCBleHBsaWNpdCBtaXNzaW5nIHZhbHVlcy4NCg0KIyMjIDIuIFdoYXQgZG9lcyB0aGUgZGlyZWN0aW9uIGFyZ3VtZW50IHRvIGBmaWxsKClgIGRvPw0KDQpXaXRoIGBmaWxsYCwgdGhlIGBkaXJlY3Rpb25gIGRldGVybWluZXMgd2hldGhlciBgTkFgIHZhbHVlcyBzaG91bGQgYmUgcmVwbGFjZWQgYnkgdGhlIHByZXZpb3VzIG5vbi1taXNzaW5nIHZhbHVlIChgImRvd24iYCkgb3IgdGhlIG5leHQgbm9uLW1pc3NpbmcgdmFsdWUgKGAidXAiYCku