2017-02-27 66 views
2

我有一些数据框,每个数据框都有3000多列,我想将它们绑定在一起。绑定不同数据类型的行

当我使用

library(dplyr) 

bind_rows(dataframe1, dataframe2, dataframe3, dataframe4) 

我得到了很多的警告:

In bind_rows_(x, .id) : Unequal factor levels: coercing to character 
... 

我想这是因为一列有型因子的数据,一个数据帧,而在另一个数据帧类型的字符数据。但我该如何解决这个问题?

我知道我可以使用

sapply(dataframe1, class) 

得到一个数据帧的类,但也有很多列,这是不可能去通过他们所有的一切4个dataframes。

这似乎是关于数据的一个问题,但是这是什么意思,有什么类型因素?这是一个数字吗?

+1

如何将数据帧导入到R中?如果使用'read.csv()',R会自动将任何字符串变量转换为因子,并根据唯一字符串的顺序来设置等级。猜测唯一字符串的顺序因数据帧而异。您可以使用'read.csv(...,stringsAsFactors = F)'并将其转换为_after_'bind_rows'因子。 – paqmo

回答

1

也许从?factor开始,关于哪些因素。

为了避免发生警告,您可以使用supressWarnings,或者您需要先转换为字符。例如(未经测试):

library(tidyverse) 
l <- list(dataframe1, dataframe2, dataframe3, dataframe4) 
l <- map(l, ~mutate_if(., is.numeric, as.character) 
bind_rows(l) 
+0

'mutate_if()'从哪里来? Not canonical'tidyverse' –

+2

自v0.5.0(即当前的CRAN版本)开始,它在'dplyr'中。 – Axeman