作为这个问题的延续,我现在正在寻找一种方法来在合并时仅标记 y 数据框中的非唯一变量。
的默认值suffixes
是查找长度为 2 的向量。
假设我有这个清单,
a <- list(A = data.frame(id = c(01, 02), a=runif(2), b=runif(2)),
B = data.frame(id = c(01, 02), b=runif(2), c=runif(2)),
C = data.frame(id = c(01, 02), c=runif(2), d=runif(2)))
a
$A
id a b
1 1 0.6922513 0.9966336
2 2 0.9216164 0.8256744
$B
id b c
1 1 0.2242940 0.7058331
2 2 0.4474754 0.9228213
$C
id c d
1 1 0.969796 0.1761250
2 2 0.633697 0.6618188
然后我进行一些自定义,将一些数据帧一个接一个地合并在一起,这里以取出一个数据帧为例,
df <- a[[1]]
a <- a[setdiff(names(a), names(a[1]))]
然后我以这种方式合并列表,
for(i in seq_along(a)) {
v <- a[[i]] # extract value
ns <- names(a)
n <- ns[[i]] # extract name
df <-merge(df, v, by.x="id", by.y="id", all.x=T,
suffixes=paste(".", n, sep = ""))
}
df
id a b.B bNA c.C cNA d
1 1 0.6922513 0.9966336 0.2242940 0.7058331 0.969796 0.1761250
2 2 0.9216164 0.8256744 0.4474754 0.9228213 0.633697 0.6618188
问题是,如上所示,R 为两个非唯一变量添加了一个标记,但由于我只提供了一个名称,n
所以我NA
在“其他”变量上得到了一个标记。在上面的示例中,我从 A 数据帧中获得了变量的 .B 后缀。
有没有一种方法可以将正确的数据框名称添加到两个变量中,或者(首选)在合并时专门标记 y 的变量?