Цель
У меня есть фрейм данных в R, моя цель - чтобы каждая строка фрейма данных выполняла вызов API, извлекала данные в формате csv, затем объединяла два фрейма данных и добавляла новую отформатированную строку к CSV-файл. Я использовал функцию apply
для l oop в каждой строке исходного df, но я пытался объединить два результирующих df и добавить их в файл.
Сначала ввод строки в мой get_temp Функция кажется вектором символов. Кажется, что ответ от вызова API автоматически преобразуется в dataframe
с помощью функции read_csv
. Моя цель состоит в том, чтобы просто объединить две стороны . Я предполагаю, что мне нужно было бы преобразовать вектор строки в фрейм данных, но я на самом деле не уверен, что это правильный подход, и я изо всех сил пытался это сделать.
Вот фрагмент кода, который я написал, чтобы попытаться достичь что:
get_temp <- function(row) {
uri <- build_uri(latitude, longitude, start_date)
response <- read_csv(uri)
merged <- merge(response, row, by=0)
write.table(merged, file = "temp_and_cases.csv", append = TRUE, sep = ",")
}
row
является текущей строкой из cases_by_region
df.
response
является результатом api_call.
cases_by_region
был получен -> cases_by_region <- read_csv("cases_by_region.csv")
и выглядит так:
State | admin2 |province_state | lat | longcombined_key | day | number_of_cases | total_cases
Abbreviation
Alabama | Autauga | Alabama | 32.53953 | -86.64408 | Autauga, Alabama, US | 2020-04-03 | 12 | 72 | AL |
ответ API - это CSV, который выглядит так:
Address,Date time,Minimum Temperature,Maximum Temperature,Temperature,Dew Point,Relative Humidity,Heat Index,Wind Speed,Wind Gust,Wind Direction,Wind Chill,Precipitation,Precipitation Cover,Snow Depth,Visibility,Cloud Cover,Sea Level Pressure,Weather Type,Latitude,Longitude,Resolved Address,Name,Info,Conditions
"32.53953,-86.64408","04/03/2020",7.5,25.2,15.7,8.4,67.85,,8.7,,35.79,,0,0,,15.8,7.1,1016.3,"",32.53953,-86.64408,"32.53953,-86.64408","","","Clear"
Пока что написанный мной код действительно добавляется в файл CSV, но не совсем ожидаемым образом (странное объединение заголовков и отсутствие значений строк ...):
"Row.names","Address","Date time","Minimum Temperature","Maximum Temperature","Temperature","Dew Point","Relative Humidity","Heat Index","Wind Speed","Wind Gust","Wind Direction","Wind Chill","Precipitation","Precipitation Cover","Snow Depth","Visibility","Cloud Cover","Sea Level Pressure","Weather Type","Latitude","Longitude","Resolved Address","Name","Info","Conditions","y"
Эта часть применяется для применения функции get_temp к каждой строке cases_by_region
temps <- apply(cases_by_region, 1, get_temp)
Как можно объединить строку и ответ от API-интерфейса рядом, а затем добавить к каждой созданной строке файл temp_and_cases.csv
в правильном формате CSV (дополнительная проблема заключается в том, что имена столбцов должны быть добавлены к файл csv только при первом вызове API)?