更新:我道歉......我应该已经指定了有对于一些测试遗漏值(来进行ñ倍,其他机构所做的m次),和我想那将影响基于merge
documentation答案:合并两个数据帧R:一个包含每个因素一行,其他包含每个因素多行
all.x
逻辑;如果为TRUE,则额外的行将被添加到输出中,对于y中没有匹配行的x中的每一行都会添加一行。这些行将在那些通常用来自y的值填充的列中具有NAs。缺省值为FALSE,因此只有包含x和y数据的行才会包含在输出中。
我不希望这两个选项中的任何一个:即,我不希望只保留匹配的行/列值,也不希望使用NA填充不匹配的行/列交集值。
我有来自实验的数据,并将我的化学成分存储在一个文件中,并在另一个文件中进行测试。我想合并这些,这样我就可以绘制由组成因素水平面向的箱型图,但我很难搞清楚如何去做。下面是一些例子的数据(按上述调整):
set.seed(1)
df.ids <- data.frame(lot=c("A","B","C"),
var1=c(1,2,3),
var2=c(4,5,6))
df.testing <- data.frame(lot=c(rep("A",4), rep("B",4),rep("C",4)),
test1=rep(c(runif(3,min=1,max=5),NA),3),
test2=rep(c(runif(2,min=1,max=5),NA,NA),3),
test3=rep(runif(4,min=1,max=5),3))
就像我的真实数据,这些ID数据帧每个因子水平一列,但测试数据有多个每次测试重复。我可以如何合并这些东西,以便我填写每个作品的作品?换句话说,我得到的数据帧应该是这样的:
| lot | test1 | test2 | test3 | var1 | var2 |
|-----+----------+----------+----------+------+------|
| A | 2.062035 | 4.632831 | 4.593559 | 1 | 4 |
| A | 2.488496 | 1.806728 | 4.778701 | 1 | 4 |
| A | 3.291413 | NA | 3.643191 | 1 | 4 |
| A | NA | NA | 3.516456 | 1 | 4 |
| B | 2.062035 | 4.632831 | 4.593559 | 2 | 5 |
| B | 2.488496 | 1.806728 | 4.778701 | 2 | 5 |
| B | 3.291413 | NA | 3.643191 | 2 | 5 |
| B | NA | NA | 3.516456 | 2 | 5 |
| C | 2.062035 | 4.632831 | 4.593559 | 3 | 6 |
| C | 2.488496 | 1.806728 | 4.778701 | 3 | 6 |
| C | 3.291413 | NA | 3.643191 | 3 | 6 |
| C | NA | NA | 3.516456 | 3 | 6 |
最后,我想所有我想要做的是比赛唯一的批号ID,然后就从df.ids
复制值每它的列成df.testing
。我只是不知道如何(当然,我想用for()
循环来做,但我确定有更好的方法)!
@ttmaccer我刚刚编辑了我的答案......我有可能影响答案的NAs。我知道默认合并删除了几乎所有的行(〜700到40),所以有些事情正在发生。 – Hendy
@ttmaccer不完全理解'merge()'并且对R来说是新的,我完全不知道发生了什么,但我只需要使用merge(df.1,df.2,by =“common。 column.name“)'它工作。 – Hendy