数据帧的rbind列表,字符和数字中的一列(rbind list of data frames wi

2019-10-17 10:55发布

我有相同的列名的两个数据帧的列表,但不同的行数,rbind.fill可以帮助把它们连成一个大的数据帧,但问题是,在DF1的第一列是数字数据,以及DF2是字符数据,它们被合并时,文字数据全部变成1,我四处搜寻,但没有得到解决了这一问题,任何帮助,将不胜感激。 一个小例子:

station <- c(1:10)
value <- c(101:110)  
df1 <- data.frame(cbind(station,value)) 
station <- c("a","b")
value <- c(101:102)  
df2 <- data.frame(cbind(station,value)) 
data1 <- rbind.fill(df1,df2)

我想字符保持为字符,谢谢。

Answer 1:

这不是性格,如果它的转向它的数字,这是一个因素。 使用str进行检查。 这将让你去:

df2$station <- as.character(df2$station)

编辑:或使用从字符串转换为因素保持R'当你板条箱数据帧:

df2 <- data.frame(cbind(station,value), stringsAsFactors = FALSE) 

控制台输出:

> station <- c(1:10)
> value <- c(101:110)  
> df1 <- data.frame(cbind(station,value)) 
> station <- c("a","b")
> value <- c(101:102)  
> df2 <- data.frame(cbind(station,value)) 
> df2$station <- as.character(df2$station)
> 
> library(plyr)
> data1 <- rbind.fill(df1,df2)
> data1
   station value
1        1   101
2        2   102
3        3   103
4        4   104
5        5   105
6        6   106
7        7   107
8        8   108
9        9   109
10      10   110
11       a     1
12       b     2


Answer 2:

好像你没有使用rbind.fill因为你的数据帧都具有相同的列名。 刚刚尝试rbind这会工作得很好。 您statet您正在使用的列表,所以你可能会想知道这跟小窍门do.call

df1 <- data.frame(station = 1:10, value = 101:110) 
df2 <- data.frame(station = c("a","b"), value = 101:102) 
(data1 <- rbind.fill(df1,df2))
rbind(df1,df2)

dfl <- list(df1,df2)
do.call("rbind",dfl)

请注意,我都有种“干净”的示例代码。 你不必来连接一切。



文章来源: rbind list of data frames with one column of characters and numerics