У меня есть несколько фреймов данных в широком формате, импортированных из DBF. Таким образом, каждый столбец - это дата, а каждая строка - наблюдение. Таким образом, на каждый день у меня от 500 до 2000 наблюдений в зависимости от размера географии c формы, на которую я смотрю. Для целей воспроизведения я создал 2 фиктивных фрейма данных с диапазоном значений, которые я могу видеть в моих реальных фреймах данных.
Data1<- data.frame(replicate(10, sample(0:1000, 20, rep= TRUE)))
Data<- data.frame(replicate(10, sample(0:1000, 20, rep= TRUE)))
Поскольку у меня есть много таких фреймов данных, я поместил их в список, чтобы я мог запускать функции сразу для многих.
filenames<- mget(ls(pattern= 'Data'))
Теперь моя проблема в том, что я пытаюсь написать функцию для подсчета количества вхождений в каждом столбце, где значения находятся в диапазоне 0-100. Я могу выполнить sh это с помощью
library(plyr)
Datacount<- ldply(Data, function(x) length(which(x>=0 & x<=100)))
Тогда мне нужно будет иметь возможность сопоставить первый экземпляр столбца (дату), в котором это подсчитанное число превышает 10% от общего числа наблюдений на столбец , Поэтому для кадра данных с 20 наблюдениями мне бы хотелось, чтобы первая дата, когда число ячеек в диапазоне от 0 до 100 превышало 2. Я ранее выполнил это с помощью apply (где «V1» - это имя столбца, содержащее число)
Datamatch<- apply (Datacount["V1"]>2,2,function(x) match (TRUE,x))
У меня вопрос, есть ли способ объединить эти функции в один процесс, который я могу использовать либо для for l oop над "именами файлов", либо с помощью одной из функций семейства lapply?
Для подробностей здесь приведен пример одной функции, которую я построил для запуска по каждой строке кадра данных. Это дает мне индекс столбца последней даты, где значение каждой строки <= 100. Затем я использовал lpply для l oop по всем фреймам данных в моем списке и добавляю результаты функции в исходный фрейм данных. </p>
icein <- function (dataframe) {dataframe $ icein <- apply (dataframe, 1, function (x) {tail (which (x <= 100), 1)}) dataframe} <br>list2env (lapply (имена файлов, icein), envir = .GlobalEnv)