У меня есть два набора данных, который разделяет подобные аспекты, например, набор данныеобъединение кадра данных по столбцу и строкам
name year region
Jane 1980 1
Jane 1981 2
Mike 1980 1
Mike 1985 4
Bob 1980 NA
Bob 1981 1
и набор данных B
year 1 2 3 4 5
1980 12 44 76 108 140
1981 55 77 99 121 143
1982 56 76 96 116 136
1983 56 43 30 17 4
Я хочу, чтобы создать новый столбец в первый набор данных под названием «income
», который включает номера во втором наборе данных в соответствии с годом и столбцами 1-5. Например, поскольку Боб в 1980 году был в регионе 5, соответствующий income
был бы равен 140. Если нет совпадения, я хочу, чтобы income
был NA
.
До сих пор я пытался
which(A$year==B$year & A$region==rownames(B)[2:6])
, но я не думаю, что это работает.
Я также хочу добавить, что не существует совпадений для всех точек данных, для переменной области A имеются значения NA для переменной области A, а количество лет в наборе данных B не охватывает все годы в данных set A.
Спасибо за этот код! У меня есть одна проблема, хотя, поскольку не все совпадения данных совпадают, число ячеек после цикла cbind (совпадение (A $ year, rownames (b)), область A $) есть во всем наборе данных, и когда я пытаюсь чтобы извлечь это из b, я получаю сообщение об ошибке «индекс за пределами границ». Был бы способ извлечь тот, который я нашел, но оставить остальных как НС? – song0089
@ Rusuer9000, даже с вашим редактированием, как мой ответ, так и работа Джорана. Вы можете увидеть, можете ли вы воссоздать небольшой набор данных (воспроизводимым образом, как мы это делали в этих ответах), которые демонстрируют проблему/ошибку? Благодарю. – A5C1D2H2I1M1N2O1R2T1
Я выяснил проблему - матрица после выполнения cbind была матрицей символов, которую я должен был превратить в числовое значение перед извлечением из b. Спасибо! – song0089