allcsvs = list.files(pattern = "*.csv$", recursive = TRUE)
library(tidyverse)
##LOOP to redact the snow data csvs##
for(x in 1:length(allcsvs)) {
df = read.csv(allcsvs[x], check.names = FALSE)
newdf = df %>%
gather(COL_DATE, SNOW_DEPTH, -PT_ID, -DATE) %>%
mutate(
DATE = as.Date(DATE,format = "%m/%d/%Y"),
COL_DATE = as.Date(COL_DATE, format = "%Y.%m.%d")
) %>%
filter(DATE == COL_DATE) %>%
select(-COL_DATE)
####TURN DATES UNAMBIGUOUS HERE####
df$DATE = lubridate::mdy(df$DATE)
finaldf = merge(newdf, df, all.y = TRUE)
write.csv(finaldf, allcsvs[x])
df = read.csv(allcsvs[x])
newdf = df[, -grep("X20", colnames(df))]
write.csv(newdf, allcsvs[x])
}
Я использую приведенный выше код, чтобы построчно заполнять новый столбец, используя значения из различных существующих столбцов, используя дату в качестве критерия выбора.Если я вручную открою каждый .csv в Excel и удаляю первый столбец, этот код прекрасно работает.Однако, если я запускаю его на .csvs "как есть"
, я получаю следующее сообщение:
Error: Column 1 must be named
Пока я пытался поставить -rownames
в скобках gather
я пытался поставить remove_rownames %>%
ниже newdf = df %>%
, но, похоже, ничего не работает.Я попытался прочитать csv без первого столбца [,-1]
или удалить первый столбец в R df[,1]<-NULL
, но по какой-то причине, когда я это делаю, мой код возвращает пустую таблицу вместо того, что я хочу. Другими словами, я могу удалить имена строк в Excel, и это прекрасно работает, если я удаляю их в R, происходит что-то необычное.
Вот некоторые примеры данных: https://drive.google.com/file/d/1RiMrx4wOpUdJkN4il6IopciSF6pKeNLr/view?usp=sharing