Rbinding dataframes的大名单后,我做了一些数据的清洗名单上(Rbinding la

2019-10-28 12:08发布

我的问题是,我不能做一些数据清洗之前合并dataframes的大名单。 但好像我的数据清洗列表中缺少。

我有43 XLSX档案,我已经把在列表中。

这里是我的那部分代码:

file.list <- list.files(recursive=T,pattern='*.xlsx')

dat = lapply(file.list, function(i){
    x = read.xlsx(i, sheet=1, startRow=2, colNames = T,
            skipEmptyCols = T, skipEmptyRows = T)

# Create column with file name  
x$file = i

# Return data
x
})

然后我做了一些datacleaning。 一些dataframes的有那些没有在装载和一些列我只是没跳过需要一些空列。

的我如何除去从列表中的所有dataframes一列(X1)实施例:

dat <- lapply(dat, function(x) { x["X1"] <- NULL; x })

我也适用于列名:

colnames <- c("ID", "UDLIGNNR","BILAGNR", "AKT", "BA",
          "IART", "HTRANS", "DTRANS", "BELOB", "REGD",
          "BOGFD", "AFVBOGFD", "VALORD", "UDLIGND", 
          "UÅ", "AFSTEMNGL", "NRBASIS", "SPECIFIK1",
          "SPECIFIK2", "SPECIFIK3", "PERIODE","FILE")
dat <- lapply(dat, setNames, colnames)

我的问题是,当我打开列表或查看列表中的元素,我的数据清洗缺失。

而且,由于他们不是在寻找同样的,我不能将数据绑定在清洁之前dataframes。

我在做什么错在这里?

编辑:样本数据*

# Sample data
a <- c("a","b","c")
b <- c(1,2,3)
X1 <- c("", "","")
c <- c("a","b","c")
X2 <- c(1,2,3)
X1 <- c("", "","")
df1 <- data.frame(a,b,c,X1)
df2 <- data.frame(a,b,c,X1,X2)

# Putting in list
dat <- list(df1,df2)

# Removing unwanted columns
dat <- lapply(dat, function(x) { x["X1"] <- NULL; x })
dat <- lapply(dat, function(x) { x["X2"] <- NULL; x })

# Setting column names
colnames <- c("Alpha", "Beta", "Gamma")
dat <- lapply(dat, setNames, colnames)

# Merging dataframes 
df <- do.call(rbind,dat)

所以,我刚刚发现我的样本数据这一进展顺利。 我不得不重新打开浏览模式列表中看到我所做的更改。 这并不改变写入CSV时并重新打开所有的数据清洗缺失(haven'tr试图与我的样本数据)的事实。

我想知道是否是因为我已经改变了合并?

# My merge when I wrote this question: 
df <- do.call("rbindlist", dat)

# My merge now: 
df <- do.call(rbind,dat)

当我用我的真实数据是亘古不变的去那样顺利,所以我想样本数据是坏的。 我不知道我在做什么错了,所以我不能给一些更好的样本数据。

与rbind合并时,我得到的消息:

error in rbind(deparse.level ...) numbers of columns of arguments do not match
文章来源: Rbinding large list of dataframes after I did some data cleaning on the list
标签: r rbind