R 如何根据某些条件合并两个数据帧?
我有一个名为PATIENTS的数据框,它看起来像这样:R 如何根据某些条件合并两个数据帧?,r,variables,merge,dataframe,R,Variables,Merge,Dataframe,我有一个名为PATIENTS的数据框,它看起来像这样: ID ARR_DATETIME 1 2013-01-01 03:00:00 2 2013-05-12 01:00:00 3 2013-06-23 14:00:00 DATETIME COUNT 2013-01-01 01:00:00 4 2013-01-01 02:00:00 5 2013-01-01 03:00:00 9 ... 2
ID ARR_DATETIME
1 2013-01-01 03:00:00
2 2013-05-12 01:00:00
3 2013-06-23 14:00:00
DATETIME COUNT
2013-01-01 01:00:00 4
2013-01-01 02:00:00 5
2013-01-01 03:00:00 9
...
2013-05-12 01:00:00 8
...
2013-06-23 14:00:00 6
我有一个叫做普查的rdataframe,它看起来像这样:
ID ARR_DATETIME
1 2013-01-01 03:00:00
2 2013-05-12 01:00:00
3 2013-06-23 14:00:00
DATETIME COUNT
2013-01-01 01:00:00 4
2013-01-01 02:00:00 5
2013-01-01 03:00:00 9
...
2013-05-12 01:00:00 8
...
2013-06-23 14:00:00 6
我想要的是根据只有DATETIME与ARR_DATETIME匹配的条件语句,将另一列“COUNT”添加到我的PATIENTS数据帧中
ID ARR_DATETIME COUNT
1 2013-01-01 03:00:00 9
2 2013-05-12 01:00:00 8
3 2013-06-23 14:00:00 6
我实现了一个嵌套的for循环,但由于数据的大小,它几乎要花费很长时间
有什么建议吗?我相信您希望使用合并功能
CENSUS
DATETIME COUNT
1/1/2013 4:00 9
1/1/2013 5:00 8
1/1/2013 6:00 3
1/1/2013 7:00 7
PATIENTS
name ARR_DATETIME
Joe A. 1/1/2013 7:00
Pat J. 1/1/2013 5:00
Thomas L. 1/1/2013 6:00
# EDIT :: I DID NOT PUT QUOTATIONS AROUND THE by.x & by.y arguments.
# TRY THIS
merge(PATIENTS, CENSUS, by.x = 'ARR_DATETIME', by.y = 'DATETIME')
合并(患者,普查,按.x=“ARR\u DATETIME”,按.y=“DATETIME”)
但是,您必须确保ARR_DATETIME和DATETIME的格式为字符,而不是日期对象。如果您可以添加一个具有预期输出的可复制示例,以准确了解您想要的内容,这将非常有用感谢您的建议!我刚刚编辑了它。嘿,它更好了,因为现在我们可以看到你想要的,但仍然不能复制。看,我试过了,但是R在sort.list(bx[m$xi])中给了我一个errorError:“x”必须是“sort.list”的原子。你在列表中调用过“sort”吗?这两种结构都是data.frames吗?如果键入
str(患者)
和str(普查)
,那么CENSUS$DATETIME
和PATIENTS$ARR_DATETIME
是否属于同一类型?是的,我刚刚发现了问题。我应该将ARR_DATETIME和DATETIME都转换为字符类型,而不是日期。