Я пытаюсь объединить две таблицы (файлы CSV) в R с довольно сложными условиями. Каждый файл данных содержит список морских видов и категорические экологические присвоения (в форме присвоения номера 1-6). См. Рисунки для всех заголовков столбцов.
Два файла:
my_data.csv
matt_data.csv
Я хочу сопоставить их по названию рода (заголовок столбца в обеих таблицах). Если имя рода совпадает, я хочу объединить данные.
Особые условия:
1) Если имя рода не совпадает, и оно находится в matt_data, но не в my_data, я хочу, чтобы строка, связанная с родом, была отброшена. my_data содержит только существующие в настоящее время виды, тогда как matt_data содержит некоторые вымершие виды, и я хочу только существующие в настоящее время виды. Если имя рода не совпадает и находится в my_data, но не в matt_data, я хочу, чтобы строка НЕ удалялась.
2) Данный род в matt_data может соответствовать нескольким строкам в my_data, поскольку matt_data классифицируется только по уровню рода, а my_data классифицируется по названию вида. Я хочу, чтобы matt_data соответствовал всем общим родам. Например, скажем, гомо - это род в matt_data (всего одна строка), и у меня есть 10 родов гомо в my_data, я хочу, чтобы информация в строке matt_data была добавлена ко всем 10 родам гомо в my_data.
Дайте мне знать, если что-то из этого не имеет смысла, и я могу уточнить больше.
Ранее я использовал код для объединения другого набора электронных таблиц (скопировано ниже), но в этом случае он не работает. Кроме того, я не верю, что этот код не будет правильно обрабатывать мои особые условия?
setwd("C:/Users/TrevorB/Documents/My Documents/Academics/TCBES/Thesis/IUCN WoRMS")
my_list = read.csv("C:/Users/TrevorB/Documents/My Documents/Spreadsheet Ecological Assignment.csv", header=T)
matt_list = read.csv("C:/Users/TrevorB/Documents/My Documents/matt_data.csv", header=T)
my_list$matt_list <- matt_list$category[match(my_list$genus, matt_list$genus)]
write.csv(my_list, file = 'combined.csv')