Мне нужно прочитать некоторые внешние файлы, извлечь некоторые столбцы и заполнить пропущенные значения нулями. Так что если первый файл имеет в столбце $ Name: a, b, c, d и столбец $ Area с дискретными значениями; второй файл имеет в некотором столбце: b, d, e, f и т. д. Для дальнейших файлов мне нужно создать фрейм данных такой:
a b c d e f
File1 value value value value 0 0
File2 0 value 0 value value value
Это фиктивный код, который я написал, чтобы попытаться лучше объяснить мою проблему:
listDFs <- list()
for(i in 1:10){
listDFs[[i]] <-
data.frame(Name=c(
c(paste(sample(letters,size=2,replace=TRUE),collapse="")),
c(paste(sample(letters,size=2,replace=TRUE),collapse="")),
c(paste(sample(letters,size=2,replace=TRUE),collapse="")),
c(paste(sample(letters,size=2,replace=TRUE),collapse="")),
c(paste(sample(letters,size=2,replace=TRUE),collapse="")),
c(paste(sample(letters,size=2,replace=TRUE),collapse="")),
c(paste(sample(letters,size=2,replace=TRUE),collapse=""))),
Area=runif(7))
}
lComposti <- sapply(listDFs, FUN = "[","Name")
dfComposti <- data.frame(matrix(unlist(lComposti),byrow=TRUE))
colnames(dfComposti) <- "Name"
dfComposti <- unique(dfComposti)
#
## The CORE of the code
lArea <- list()
for(i in 1:10){
lArea[[i]] <-
ifelse(dfComposti$Name %in% listDFs[[i]]$Name, listDFs[[i]]$Area, 0)}
#
mtxArea <- (matrix(unlist(lArea),nrow=c(10),ncol=dim(dfComposti)[1],byrow=TRUE))
Проблема в "синхронизации" между именем столбца и каждым значением.
У вас есть предложение ??
Если мой код не дает четкого результата, я также могу загрузить файлы, с которыми работаю.
Best