У меня есть список фреймов данных, я хотел бы работать со списком и сохранять выходные данные в новом фрейме данных. в частности, я хочу сохранить путь и столбец месяца, в то время как сделать первую строку столбца данных 1, а остальные строки в результате деления между строкой k и k-1.
Пример данных
myList2 <- list()
myList2[[1]]<- as.data.frame(matrix(c(1,1,1,1,2,3,5,6,7), nrow=3, ncol=3))
myList2[[2]]<- as.data.frame(matrix(c(2,2,2,1,2,3,4,6,5), nrow=3, ncol=3))
myList2[[3]]<- as.data.frame(matrix(c(3,3,3,1,2,3,6,7,6), nrow=3, ncol=3))
colnames <- c("path","month", "data")
myList2<-lapply(myList2, setNames,colnames)
print(myList2)
> print(myList2)
[[1]]
path month data
1 1 1 5
2 1 2 6
3 1 3 7
[[2]]
path month data
1 2 1 4
2 2 2 6
3 2 3 5
[[3]]
path month data
1 3 1 6
2 3 2 7
3 3 3 6
Что я пробовал до сих пор:
x <- list()
x <- for (i in 1:length(myList2))
{
for (k in 2:length(myList2[i]))
{
x[[i]][1] <- 1
x[[i]][k] <- myList2[[i]][k]/myList2[[i]][k-1]
}
}
Желаемый результат:
myList <- list()
myList[[1]]<- as.data.frame(matrix(c(1,1,1,1,2,3,1,5/6,6/7), nrow=3, ncol=3))
myList[[2]]<- as.data.frame(matrix(c(2,2,2,1,2,3,1,4/6,5/6), nrow=3, ncol=3))
myList[[3]]<- as.data.frame(matrix(c(3,3,3,1,2,3,1,6/7,7/6), nrow=3, ncol=3))
colnames <- c("path","month", "data")
myList<-lapply(myList, setNames,colnames)
print(myList)
> print(myList)
[[1]]
path month data
1 1 1 1.0000000
2 1 2 0.8333333
3 1 3 0.8571429
[[2]]
path month data
1 2 1 1.0000000
2 2 2 0.6666667
3 2 3 0.8333333
[[3]]
path month data
1 3 1 1.0000000
2 3 2 0.8571429
3 3 3 1.1666667