Что у меня есть: Большой файл из 1451 строк и 4663 столбцов со значениями 0, 1 и NA. Имена строк представляют собой сайты, а в столбцах - дату проведения опроса. Я хотел бы суммировать строки, используя указанные c интервалы дат, то есть суммировать определенные c столбцы, относящиеся к имени столбцов, которые представляют даты. В этом случае у меня есть 666 различных интервалов дат для суммирования строк. Указанные интервалы c даны в символе типа объекта.
Коротким воспроизводимым примером будет:
df <- read.table(text =" 2005-09-23 2005-09-24 2005-09-25 2005-09-26 2005-09-27 2005-09-28 2005-09-29 2005-09-30 2005-10-07 2005-10-08
1 0 0 1 NA 1 0 1 NA 1 0
2 1 1 1 1 1 1 1 1 1 1
3 NA NA NA NA NA NA NA NA NA NA", header = TRUE)
И строка символов с именами столбцов для суммирования, то есть дата интервалы, с начальной и конечной датами, разделенными "_":
intervals <- c("2005-09-23_2005-09-26", "2005-09-27_2005-10-30", "2005-10-07_2005-10-08")
Что я хочу: Фрейм данных с именами столбцов, которые отражают интервалы дат, сайты в строках и в ячейках сумма суммируемых значений. Важно иметь в суммах NA, в которых все значения равны NA.
result <- read.table(text =" 2005-09-23_2005-09-26 2005-09-27_2005-10-30 2005-10-07_2005-10-08
1 1 2 1
2 4 4 2
3 NA NA NA", header = TRUE)
Моя проблема: Я не знаю, как указать набор интервалов столбцов с использованием столбца имена. Я нашел здесь полезную информацию, связанную с моей проблемой, но все они требуют указания вручную столбцов, по которым нужно сложить сумму, например, df_sum <- rowSums(df [,c(1:3)])
, что в моем случае будет 666 интервалами дат. Я думаю, что ответ где-то в следующем посте и с использованием команды rowSums, однако я не могу понять, как адаптировать эти проблемы к моим. Как получить rowSums для выбранных столбцов в R и Суммировать строки в data.frame или матрице и Суммировать строки по интервалу Dataframe и R - Как суммировать объекты в столбце между интервалами, заданными условиями в другом столбце
Я не слишком разбираюсь в этом, кто-то может быть настолько любезен, чтобы предоставить мне код для этого? Спасибо!