【发布时间】:2019-11-05 23:45:35
【问题描述】:
我尝试加入三个数据框。困难在于我希望替换同一列中的冲突值,而不是创建新行。我尝试了 left_join 和 full_join 的不同变体,然后是过滤器。
示例数据框:
df.0 <-
ID SEQUENCE FIXDT.0 FIXU.0 SEX
3 0 2010-08-01 Spayed Female
1 0 2011-10-01 Neutered Male
2 0 1 Spayed Female
5 0 2012-05-01 Neutered Male
df.1_2 <-
ID SEQUENCE FIXDT.0 FIXU.0 SEX
3 1 2010-10-01 Spayed Female
1 1 1 Neutered Male
4 2 1 Spayed Female
5 1 2012-05-01 Neutered Male
df.3_6 <-
ID SEQUENCE FIXDT.0 FIXU.0 SEX
6 3 2011-08-01 Neutered Male
1 6 2012-10-01 Neutered Male
4 4 2010-02-01 Spayed Female
5 3 2012-05-01 Neutered Male
df.cohort <-
ID SEX.STATUS BIRTH.DATE ENROLLED.DATE
1 Neutered Male 8/23/2010 12/11/2012
2 Spayed Female 6/16/2011 9/11/2013
3 Spayed Female 9/28/2011 9/6/2013
4 Spayed Female 6/26/2011 1/2/2013
5 Neutered Male 4/15/2011 7/5/2012
6 Neutered Male 5/12/2010 8/16/2011
7 Intact Male 2/17/2011 10/25/2012
我想将这些与下面所需的输出结合在一起。我的想法是我将它们连接在一起,并用下一个加入的表中的值替换以前的值。另一件需要注意的重要事情是,如果可能的话,我希望在输出中显示 FIXDT 的日期。这意味着替换某些行但不替换其他行
df.full <-
ID SEX.STATUS BIRTH.DATE ENROLLED.DATE Sex FIXDT FIXU SEQUENCE
1 Neutered Male 8/23/2010 12/11/2012 Neutered Male 2011-10-01 0
2 Spayed Female 6/16/2011 9/11/2013 Spayed Female 1 0
3 Spayed Female 9/28/2011 9/6/2013 Spayed Female 2010-08-01 0
4 Spayed Female 6/26/2011 1/2/2013 Spayed Female 2010-02-01 4
5 Neutered Male 4/15/2011 7/5/2012 Neutered Male 2012-05-01 0
6 Neutered Male 5/12/2010 8/16/2011 Neutered Male 2011-08-01 3
7 Intact Male 2/17/2011 10/25/2012
我知道这需要一些中间的 data.frames 并且也尝试过以这种方式解决它。我尝试使用dplyr 和filter,但意识到它们最适合相等连接,我正在尝试进行不相等连接。
【问题讨论】:
-
您是否只想通过
ID加入?