У меня есть некоторые данные на улицах, и я запустил этот код R, чтобы получить содержимое 38 CSV-файлов в списке (больше файлов будет добавлено в будущем):
common_path <- "0_data/source_data/DB/Speed/"
csv_files <- list.files(
path = common_path, # directory to search within
pattern = ".*(1|2).*csv$", #
recursive = TRUE, # search subdirectories
full.names = TRUE # return the full path
)
data_lst = lapply(csv_files, read.csv2)
Их головы, которые выглядят как это:
Пример данных
Вот заголовок фрейма данных в воспроизводимом формате:
structure(list(typ = c(100L, 100L, 100L, 100L, 100L, 100L, 100L,
100L, 100L, 1L, 1L, 1L, 1L, 1L, 1L), date.and.time = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 3L, 4L, 5L, 6L, 7L), .Label = c("2019/11/07 18:07:27.000",
"2019/11/07 18:07:36.290", "2019/11/07 18:07:40.030", "2019/11/07 18:07:41.930",
"2019/11/07 18:07:43.720", "2019/11/07 18:07:46.380", "2019/11/07 18:07:54.010"
), class = "factor"), speed..km.h. = c(NA, NA, NA, NA, NA, NA,
NA, NA, NA, 42L, 44L, 43L, 42L, 41L, 43L), length..m. = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, 3.2, 4.2, 3.2, 3.9, 3.7, 3.2),
range..m. = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 0L, 0L,
0L, 0L, 0L, 0L), notes = c("Serial No = 1", "Direction = NORTH",
"Counting type = SINGLE LANE", "Ref count sense = IN", "Install height = 42 decimeter",
"Axis distance = 58 decimeter", "Road type = STANDARD", "Road slope = FLAT",
"Start of campain", "", "", "", "", "", "")), row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15"), class = "data.frame")
Что я хочу сделать is:
Получить информацию о первых 9 строках из столбца «заметки»
Добавить информацию из столбца «заметки» отдельно переменные
После этого удалите первые 9 строк или все строки, в которых столбцы "typ" == 100
Я могу сделать это с помощью Рука для объекта в списке без проблем, как в коде ниже:
data_lst[[1]]$serial <- data_lst[[1]]$notes[1]
data_lst[[1]]$direction <- data_lst[[1]]$notes[2]
data_lst[[1]]$lane <- data_lst[[1]]$notes[3]
data_lst[[1]]$install_height <- data_lst[[1]]$notes[5]
data_lst[[1]]$axis <- data_lst[[1]]$notes[6]
data_lst[[1]]$notes <- NULL
data_lst[[1]] <- data_lst[[1]][-c(1:9),]
Но проблемы возникают, когда я пытаюсь l oop этот процесс, так как я очень неопытен с циклами. Я сделал что-то вроде этого,
for(i in data_lst){
data_lst[[i]]$serial <- data_lst[[i]]$notes[1]
}
, чтобы получить "серийную" информацию из моих данных, но я получил эту ошибку:
error:
in data_lst[[i]] : invalid subscript type 'list'
Любая помощь горячо приветствуется:)