Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何根据某些条件合并两个数据帧?_R_Variables_Merge_Dataframe - Fatal编程技术网

R 如何根据某些条件合并两个数据帧?

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

我有一个名为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
  ...
  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都转换为字符类型,而不是日期。