0

我在 5 个单独的 CSV 文件中有 5 周的测量数据,我正在寻找一种方法将它们合并到一个有意义的文档中。我遇到的问题是,并非每个文件中都存在所有数据点,我最大的有 ~20k 行,而我最小的有 ~2k,因此不存在 1:1 的关系。这是我的数据的样子:

Keyword               URL     5/12 Rank
activity         site.com             2
activity    site.com/page             1
backup    site.com/backup             4

下一个文件看起来像这样:

Keyword               URL     5/19 Rank
activity    site.com/page             2
database    site.com/data             3

我想结束的是这样的

Keyword               URL     5/12 Rank     5/19 Rank
activity         site.com             2             -
activity    site.com/page             1             2
backup    site.com/backup             4             -
database    site.com/data             -             3

我更喜欢用 R 来做这件事。我认为 plyr会让这件事变得轻而易举,但我以前从未使用过它,我只是不知道它是如何组合在一起的。

4

1 回答 1

2

使用merge

csv1 <- read.table(header=TRUE, text="
Keyword               URL     5/12_Rank
activity         site.com             2
activity    site.com/page             1
backup    site.com/backup             4
")

csv2 <- read.table(header=TRUE, text="
Keyword               URL     5/19_Rank
activity    site.com/page             2
database    site.com/data             3
")

csv12 <- merge(csv1, csv2, all=TRUE)

#> csv12
#   Keyword             URL X5.12_Rank X5.19_Rank
#1 activity        site.com          2         NA
#2 activity   site.com/page          1          2
#3   backup site.com/backup          4         NA
#4 database   site.com/data         NA          3

如果您有多个表,则可以将它们放在 a 中list并使用Reduce

csv3 <- read.table(header=TRUE, text="
Keyword               URL     5/42_Rank
activity         site.com             5
html        site.com/data             6
")
L <- list(csv1, csv2, csv3)

Reduce(f=function(x,y)merge(x,y,all=TRUE), L)

结果

#   Keyword             URL X5.12_Rank X5.19_Rank X5.42_Rank
#1 activity        site.com          2         NA          5
#2 activity   site.com/page          1          2         NA
#3   backup site.com/backup          4         NA         NA
#4 database   site.com/data         NA          3         NA
#5     html   site.com/data         NA         NA          6
于 2013-06-14T20:36:00.147 回答