2015-07-15 6 views
1

У меня есть следующая проблема: в csv-файле у меня есть столбец для видов, один для разреза, один для года и один для AUC. В другом csv-файле у меня есть столбец для разреза, один для года, один для осадков и один для температуры. Теперь я хотел бы присоединиться к файлам в R таким образом, что у меня могут быть столбцы для видов и AUC со второго csv и столбцы для остальных с первого csv. В конце я хотел бы получить файл с transect_id, year, day, month, species, region_gam (= AUC), осадков и LST (= температура). Таким образом, в основном значения осадков/LST от TR001 на каждый день в 2008 году должны присваиваться каждому виду, имеющему значение AUC за 2008 год и TR001. Спасибо!Как объединить данные из двух разных csv-файлов в R?

+1

Посмотрите в '' read.csv' и merge' - эти две функции должны сделать трюк. –

+3

В дополнение к комментарию @EricBrooks было бы полезно, если бы вы могли предоставить (четко отформатированный) образец данных вашего текущего входного файла и ожидаемого вывода. –

+0

transect_id, виды, год, regional_gam, prop_pheno_sampled TR002, Allancastria cerisyi, 2010,0,0.594080041 TR014, Allancastria cerisyi, 2010,27,0.119491204 TR012, Allancastria cerisyi, 2011,22.4,0.575799283 это АУК-данные и : transect_id, год, день, месяц, LST, осадки TR001,2008,1,1,11.47578335,0 TR002,2008,1,1,11.47576523,0 TR007,2008,1,1,6.603372097,0 TR009 , 2008,1,1,13.25433731,0 - данные о погоде. Спасибо за tipp, я знаю две функции, но пока не понял. Но тогда я знаю, что я должен попробовать дальше в этом направлении. –

ответ

2

Используйте read.csv, а затем merge.

Загрузите два файла csv в R. (Не забудьте убедиться, что их общие переменные имеют одно и то же имя!).

df1<-read.csv(dat1,head=T) 
df2<-read.csv(dat2,head=T) 

Слияние dataframes вместе их общих переменных и добавить аргумент all.x = T (по умолчанию), чтобы гарантировать, что все строки хранятся в базе данных, содержащей разновидности.

merge(df1,df2,by=c('transect_id','year'),all.x=T) 

Чтобы увидеть это в действии с использованием тестовых данных:

test<-data.frame(sp=c(rep(letters[1:10],2)),t=c(rep(1:3,2,20)),y=c(rep(2000:2008,len=20)),AUC=1:20) 
test2<-data.frame(t=c(rep(1:3,2,9)),y=c(rep(2000:2008,len=9)),ppt=c(1:9),temp=c(11:19)) 

merge(test,test2,by=c('t','y'),all.x=T) 
+0

Hei, спасибо, я попробовал это, и после некоторых изменений в моем наборе данных это действительно сработало с слиянием, как я себе представлял :) Большое спасибо! –

+0

Несомненно! Кроме того, вы знаете: по умолчанию кадры данных объединяются в столбцы с именами, которые у них есть, но отдельные спецификации столбцов могут быть заданы 'by.x' и' by.y'. Если вы можете, пожалуйста, примите этот ответ :). – theforestecologist

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