通过粘贴替代行合并多个数据帧

时间:2018-11-14 12:43:10

标签: r dataframe merge rbind cbind

我有7年的Ascii文本格式的英国空间天气数据(每个文件/数据框具有每月的一年数据-12列和52201行,每行代表一个位置)。 我想将数据帧与其他行合并-数据帧1的第一行,然后数据帧2的第一行,直到数据帧7的第一行,然后数据帧1的第二行,直到数据帧7的第二行,然后继续....

  V1    V2    V3    V4    V5    V6    V7    V8    V9   V10   V11   V12
-1199 -1199 -1199 -1199 -1199 -1199 -1199 -1199 -1199 -1199 -1199 -1199
-1299 -1299 -1299 -1299 -1299 -1299 -1299 -1299 -1299 -1299 -1299 -1299
-1399 -1399 -1399 -1399 -1399 -1399 -1399 -1399 -1399 -1399 -1399 -1399
-9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999
-9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999 -9999

这是我的代码:

n1<-read.table("data/y1call.txt", sep="")
n2<-read.table("data/y2call.txt", sep="")
n3<-read.table("data/y3call.txt", sep="")
c<-rbind(n1,n2,n3)
merge(n1,n2,n3)

我尝试了mergerbindcbind,但都失败了。

1 个答案:

答案 0 :(得分:0)

您可以在每个数据帧中创建一个代表rownames的新列,然后在rbind之后对该变量进行排序,即

ddf_all <- do.call(rbind, lapply(list(df1, df2, df3), function(i)transform(i, new = rownames(i))))
ddf_all[order(ddf_all$new),]

给出,

   v1 v2 new
1   1  6   1
6  11 16   1
11 21 26   1
2   2  7   2
7  12 17   2
12 22 27   2
3   3  8   3
8  13 18   3
13 23 28   3
4   4  9   4
9  14 19   4
14 24 29   4
5   5 10   5
10 15 20   5
15 25 30   5

数据:

df1 <- data.frame(v1 = c(1, 2, 3, 4, 5), V2 = c(6, 7, 8, 9, 10))
df2 <- data.frame(v1 = c(11, 12, 13, 14, 15), v2 = c(16, 17, 18, 19, 20))
df3 <- data.frame(v1 = c(21, 22, 23, 24, 25), v2 = c(26, 27, 28, 29, 30))