У меня есть большой фрейм данных, который принимает форму ниже, где каждый столбец обозначает год, товар и единицу.Каждое наблюдение соответствует шахте, и каждое значение является произведенным количеством.
library(tibble)
rdf <- tribble(
~`1997_Silver_oz`, ~`1998_Diamonds_ct`, ~`1999_Coal_lbs`, ~`1999_Copper_tonnes`,
150000, 20000, NA_integer_, NA_integer_,
NA_integer_, 50000, NA_integer_, 1,
NA_integer_, NA_integer_, NA_integer_, NA_integer_,
40000, 205000, NA_integer_, NA_integer_
)
Я хочу свернуть эти данные до двух уровней агрегации, чтобы увидеть, где существует ненулевое производство для каждого года и товара / года.
Что такое промежуточный этап Iнужно разделить мои существующие столбцы на несколько, как показано ниже?
rdf_gathered <- tribble(
~year, ~commodity, ~unit, ~amount,
1997, 'Silver', 'oz', 150000,
1997, 'Silver', 'oz', NA_integer_,
1997, 'Silver', 'oz', NA_integer_,
1997, 'Silver', 'oz', 40000,
1998, 'Diamonds', 'ct', 20000,
1998, 'Diamonds', 'ct', 50000,
1998, 'Diamonds', 'ct', NA_integer_,
1998, 'Diamonds', 'ct', 205000,
1999, 'Coal', 'lbs', NA_integer_,
1999, 'Coal', 'lbs', NA_integer_,
1999, 'Coal', 'lbs', NA_integer_,
1999, 'Coal', 'lbs', NA_integer_,
1999, 'Copper', 'tonnes', NA_integer_,
1999, 'Copper', 'tonnes', 1,
1999, 'Copper', 'tonnes', NA_integer_,
1999, 'Copper', 'tonnes', NA_integer_
)
И после этого шага, какой шаг мне нужно предпринять, чтобы свернуть этот фрейм данных в один, который измеряет ненулевое производство, как показано ниже?[NA -> 0, еще 1]
# Collapse
rdf_collapsed_v1 <- tribble(
~`1997_Silver`, ~`1998_Diamonds`, ~`1999_Coal`, ~`1999_Copper`,
1, 1, 0, 1
)
rdf_collapsed_v2 <- tribble(
~`1997`, ~`1998`, ~`1999`,
1, 1, 1
)
Я использую / в основном предпочитаю функции обратного хода, но также заинтересован в любом изящном базовом решении.