2014-09-18 3 views
0

У меня есть девять различных фреймов данных, на которых я хочу запустить те же тесты поиска.с помощью таблицы поиска для заполнения нескольких столбцов

Вот два из девяти dataframes ...

PIRO_PLS_Points <- structure(list(SPECIES1 = c("CE", "BE", "BE", "YB", "BF", "BE", 
"SU", "CE", "SU", "SU"), ComName1 = c(NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_), Latin1 = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_), 
    TSN1 = c(NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_), SPECIES2 = c("CE", "BE", "BE", 
    "YB", "BF", "BE", "BE", "SU", "SU", "SU"), ComName2 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_), Latin2 = c(NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_ 
    ), TSN2 = c(NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), SPECIES3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_), ComName3 = c(NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_ 
    ), Latin3 = c(NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), TSN3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_)), data_types = c("N", "N", "F", "F", "N", 
"N", "N", "F", "F", "C", "C", "N", "C", "C", "C", "C", "C", "C", 
"N", "C", "C", "C", "C", "C", "C", "C", "C", "C", "N", "C", "C", 
"C", "C", "C", "C", "C", "C", "C", "N", "C", "C", "C", "C", "C", 
"C", "C", "C", "C", "N", "C", "C", "C", "C", "C", "N", "C", "N", 
"N", "N", "C", "N", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
"N", "N", "C", "F", "F", "F", "F", "N", "N", "F", "F", "N", "N", 
"C", "C", "C", "C", "F", "F", "C"), .Names = c("SPECIES1", "ComName1", 
"Latin1", "TSN1", "SPECIES2", "ComName2", "Latin2", "TSN2", "SPECIES3", 
"ComName3", "Latin3", "TSN3"), row.names = c("1", "2", "3", "4", 
"5", "6", "7", "8", "9", "10"), class = "data.frame") 

и

SLBE_PLS_Points <- structure(list(SPECIES1 = c("CE", "BE", "BE", "YB", "BF", "BE", 
"SU", "CE", "SU", "SU"), ComName1 = c(NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_), Latin1 = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_), 
    TSN1 = c(NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_), SPECIES2 = c("CE", "BE", "BE", 
    "YB", "BF", "BE", "BE", "SU", "SU", "SU"), ComName2 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_), Latin2 = c(NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_ 
    ), TSN2 = c(NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), SPECIES3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_), ComName3 = c(NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_ 
    ), Latin3 = c(NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_), TSN3 = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_)), data_types = c("N", "N", "F", "F", "N", 
"N", "N", "F", "F", "C", "C", "N", "C", "C", "C", "C", "C", "C", 
"N", "C", "C", "C", "C", "C", "C", "C", "C", "C", "N", "C", "C", 
"C", "C", "C", "C", "C", "C", "C", "N", "C", "C", "C", "C", "C", 
"C", "C", "C", "C", "N", "C", "C", "C", "C", "C", "N", "C", "N", 
"N", "N", "C", "N", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
"N", "N", "C", "F", "F", "F", "F", "N", "N", "F", "F", "N", "N", 
"C", "C", "C", "C", "F", "F", "C"), .Names = c("SPECIES1", "ComName1", 
"Latin1", "TSN1", "SPECIES2", "ComName2", "Latin2", "TSN2", "SPECIES3", 
"ComName3", "Latin3", "TSN3"), row.names = c("1", "2", "3", "4", 
"5", "6", "7", "8", "9", "10"), class = "data.frame") 

В dataframes уже содержат столбцы, которые я хочу, чтобы заполнить (ComName1, Latin1, TSN1, ComName2 и т.д.) на основе другой колонки; SPECIES1, SPECIES2 и т.д.

Вот таблица поиска, которые я хотел бы применить ...

sp.list <-c('BE','YB','SU') 
com.list <-c('bear','yellow','supper') 
latin.list <- c('juglans','quercus','fraxinus') 
tsn.list <- c(100203,999999,88888) 

lookup = cbind(sp.list,com.list,latin.list,tsn.list) 

И выглядит следующим образом:

 sp.list com.list latin.list tsn.list 
[1,] "BE" "bear" "juglans" "100203" 
[2,] "YB" "yellow" "quercus" "999999" 
[3,] "SU" "supper" "fraxinus" "88888" 

Таким образом, в конце концов, я хотел бы для заполнения $ComName1, $Latin1, $TSN1,, , и т.п. все основываясь на lookup таблица. Я думал, что таблица поиска будет самым простым способом, но я открыт для других предложений.

ответ

1

Вероятно, проще всего сделать, это стек все ваши кадры данных, а затем объединить в таблице поиска

dfs <- rbind(PIRO_PLS_Points, SLBE_PLS_Points, ...) 
dfs$sp.list <- dfs$SPECIES1 
merged <- merge(dfs, lookup) 

Вы можете разделить его обратно в отдельные данные кадры, используя split() или Подменю.

+0

Это обеспечивает поиск только для SPECIES1. Я хотел бы использовать тот же поиск, чтобы пройти и заполнить ComName2, Latin2, TSN2, ComName3 и т. Д. – cherrytree

+0

Вы можете запустить его три раза, например make 'merged_species1',' merged_species2' и т. Д., Тогда 'cbind()' them все в единый набор данных. Но вам, вероятно, будет лучше использовать SQL в этот момент. –

Смежные вопросы