Я пытаюсь извлечь конкретные значения из данных, основанных на столбце с некоторыми условиями (в year_col).
Данные:
id_row year_row id_col year_col value
1 ID1 2000 ID1 2000 0.00000000
2 ID1 2001 ID1 2000 0.01265282
3 ID1 2002 ID1 2000 0.97564274
4 ID1 2003 ID1 2000 0.98024541
5 ID1 2004 ID1 2000 0.51856337
6 ID2 2000 ID1 2000 1.00000000
7 ID2 2001 ID1 2000 0.97501220
8 ID2 2002 ID1 2000 0.97273607
9 ID3 2000 ID1 2000 1.00000000
10 ID1 2000 ID1 2001 0.01265282
11 ID1 2001 ID1 2001 0.00000000
12 ID1 2002 ID1 2001 0.97198829
13 ID1 2003 ID1 2001 0.97728153
14 ID1 2004 ID1 2001 0.49576573
15 ID2 2000 ID1 2001 1.00000000
16 ID2 2001 ID1 2001 0.97126315
17 ID2 2002 ID1 2001 0.96864553
18 ID3 2000 ID1 2001 1.00000000
19 ID1 2000 ID1 2002 0.97564274
20 ID1 2001 ID1 2002 0.97198829
Ожидаемый результат:
id_row year_row id_col year_col value
1 ID1 2001 ID1 2000 0.01265282
2 ID1 2002 ID1 2001 0.97198829
3 ID1 2003 ID1 2002 0.09580557
4 ID1 2004 ID1 2003 0.94777670
5 ID2 2001 ID2 2000 0.97501220
6 ID2 2002 ID2 2001 0.96864553
То есть извлекаются значения для каждого идентификатора в id_row и id_col и для каждого года в year_row, но с отставанием year_col.
Я посмотрел на group_by и отфильтровал без особой удачи.
Вот мои данные
df <- structure(list(id_row = c("ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID2", "ID2", "ID2", "ID3"), year_row = c("2000", "2001", "2002",
"2003", "2004", "2000", "2001", "2002", "2000", "2000", "2001",
"2002", "2003", "2004", "2000", "2001", "2002", "2000", "2000",
"2001", "2002", "2003", "2004", "2000", "2001", "2002", "2000",
"2000", "2001", "2002", "2003", "2004", "2000", "2001", "2002",
"2000", "2000", "2001", "2002", "2003", "2004", "2000", "2001",
"2002", "2000", "2000", "2001", "2002", "2003", "2004", "2000",
"2001", "2002", "2000", "2000", "2001", "2002", "2003", "2004",
"2000", "2001", "2002", "2000", "2000", "2001", "2002", "2003",
"2004", "2000", "2001", "2002", "2000", "2000", "2001", "2002",
"2003", "2004", "2000", "2001", "2002", "2000"), id_col = c("ID1",
"ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1",
"ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID1", "ID2",
"ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID2",
"ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID2",
"ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID2", "ID3",
"ID3", "ID3", "ID3", "ID3", "ID3", "ID3", "ID3", "ID3"), year_col = c("2000",
"2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000",
"2001", "2001", "2001", "2001", "2001", "2001", "2001", "2001",
"2001", "2002", "2002", "2002", "2002", "2002", "2002", "2002",
"2002", "2002", "2003", "2003", "2003", "2003", "2003", "2003",
"2003", "2003", "2003", "2004", "2004", "2004", "2004", "2004",
"2004", "2004", "2004", "2004", "2000", "2000", "2000", "2000",
"2000", "2000", "2000", "2000", "2000", "2001", "2001", "2001",
"2001", "2001", "2001", "2001", "2001", "2001", "2002", "2002",
"2002", "2002", "2002", "2002", "2002", "2002", "2002", "2000",
"2000", "2000", "2000", "2000", "2000", "2000", "2000", "2000"
), value = c(0, 0.0126528243223428, 0.975642738186892, 0.980245408067008,
0.518563371872083, 1, 0.975012198097823, 0.97273607293636, 1,
0.0126528243223428, 0, 0.971988294886507, 0.977281526630117,
0.495765729632059, 1, 0.971263151675716, 0.968645527933215, 1,
0.975642738186892, 0.971988294886507, 0, 0.0958055698205349,
0.952303016080655, 0.771039058422751, 0.71926736774858, 0.875209312956793,
0.761542337380287, 0.980245408067008, 0.977281526630117, 0.0958055698205349,
0, 0.947776703213291, 0.758596060369833, 0.721719565905183, 0.875788199318376,
0.742136651511878, 0.518563371872083, 0.495765729632059, 0.952303016080655,
0.947776703213291, 0, 0.940736749815103, 0.937612053309506, 0.975975000994785,
0.943889690922876, 1, 1, 0.771039058422751, 0.758596060369833,
0.940736749815103, 0, 0.753367507803825, 0.820601259631019, 0.0572833227621783,
0.975012198097823, 0.971263151675716, 0.71926736774858, 0.721719565905183,
0.937612053309506, 0.753367507803825, 0, 0.903984128296163, 0.765562291938692,
0.97273607293636, 0.968645527933215, 0.875209312956793, 0.875788199318376,
0.975975000994785, 0.820601259631019, 0.903984128296163, 0, 0.844300211167695,
1, 1, 0.761542337380287, 0.742136651511878, 0.943889690922876,
0.0572833227621783, 0.765562291938692, 0.844300211167695, 0)), class = "data.frame", row.names = c(NA,
-81L))