У меня есть дата-рамка, где один столбец - дата yyyy-mm-dd, однако иногда она пропускает даты, оставляя дни, месяцы или даже годы. Как создать строки, в которых отсутствуют даты, и заполнить пустые слоты данных с помощью NA? Я пробовал предлагаемое решение here, но я не могу заставить его работать. Моя dataframe выглядит следующим образом:Заполнение данных таймсером с NULL-строками R
Data <- data.frame(X = c(1:10),
Y = seq.Date(as.Date("1870-01-01"),as.Date("1870-01-10"),"day"),
Z = rnorm(10,10,5), A = c(10:1), B = c(109:100))
Datamissing <- Data[-c(2,4,7:10),]
Datamissing
# X Y Z A B
#1 1 1870-01-01 3.581199 10 109
#3 3 1870-01-03 6.158980 8 107
#5 5 1870-01-05 10.259756 6 105
#6 6 1870-01-06 3.077985 5 104
И выход я хочу это:
Data[c(2,4,7:10),c(3:5)] <- NA
Datafilled <- Data
Datafilled
# X Y Z A B
#1 1 1870-01-01 3.581199 10 109
#2 2 1870-01-02 NA NA NA
#3 3 1870-01-03 6.158980 8 107
#4 4 1870-01-04 NA NA NA
#5 5 1870-01-05 10.259756 6 105
#6 6 1870-01-06 3.077985 5 104
#7 7 1870-01-07 NA NA NA
#8 8 1870-01-08 NA NA NA
#9 9 1870-01-09 NA NA NA
#10 10 1870-01-10 NA NA NA
Кроме того у меня есть куча этих dataframes в списке. До сих пор у меня есть data.frame со списком даты начала и окончания, я применяю его к новому dataframe:
days <- seq.Date(as.Date("1870-01-01"),as.Date("2016-01-01"),"day")
QCdata <- as.data.frame(days)
Тогда я что-то вроде:
QCdata[,3] <- data_list[[1]][,3][pmatch(QCdata[,1], data_list[[1]][,3])]
Где data_list просто список, содержащий все мои данные.
Я не понимаю, как это решает мою проблему, или как я могу адаптировать код в соответствии со своей ситуацией. Извините. –
Вот моя MRE: Данные <- data.frame ( X = c (1:10), Y = seq.Date (as.Date ("1870-01-01"), as.Date (" (10: 1), B = c (109: 100)) Datamissing <-> Данные [-c (2,4,7: 10),] #Datamissing - это то, что у меня есть. Я хочу: Заполненный данными <- Данные Заполненный данными [c (2,4,7: 10), c (3: 5)] <- NA # Заполненный датой. Есть дополнительные столбцы, которые я хочу сохранить, но в противном случае ничего не делаю. Это имеет смысл? Благодарю. –
@JominicDones - я добавил ваше MRE к вашему вопросу, где и должно быть. – thelatemail