我有相同的列名的两个数据帧的列表,但不同的行数,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)
我想字符保持为字符,谢谢。
这不是性格,如果它的转向它的数字,这是一个因素。 使用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
好像你没有使用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)
请注意,我都有种“干净”的示例代码。 你不必来连接一切。