Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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_Merge - Fatal编程技术网

R中两个长度不等的数据集的求和合并

R中两个长度不等的数据集的求和合并,r,merge,R,Merge,我试图从另一个长度不同的数据集中向我的数据集中添加两个变量。我有一个coralreef调查数据集,我缺少每个地点和调查区域每次潜水的开始和结束时间 此外,我还有一个表格,其中包含每个场地和区域每次潜水的开始和结束时间: 此表重复了wpt(站点),因为每个站点测量了2个区域,这意味着在该表中,每行都应该是唯一的。在我自己的数据集中,我对wpt有更多的重复,因为我在同一个地点和区域有几次观测。我需要匹配mergingdata的唯一行,以将其合并到返回mergingdata开始和结束时间的fishda

我试图从另一个长度不同的数据集中向我的数据集中添加两个变量。我有一个coralreef调查数据集,我缺少每个地点和调查区域每次潜水的开始和结束时间

此外,我还有一个表格,其中包含每个场地和区域每次潜水的开始和结束时间:

此表重复了wpt(站点),因为每个站点测量了2个区域,这意味着在该表中,每行都应该是唯一的。在我自己的数据集中,我对wpt有更多的重复,因为我在同一个地点和区域有几次观测。我需要匹配mergingdata的唯一行,以将其合并到返回mergingdata开始和结束时间的fishdata。所以我想通过“wpt”和“zone”进行匹配和合并

这就是我尝试过的:

merge<- merge(fishdata, mergingdata, by="wpt", all=TRUE, sort=FALSE)

mergemerge
help(merge)
的文档说明:

默认情况下,数据帧合并在具有其名称的列上 两者都有,但柱的单独规格可通过以下公式给出: x和y

由于两个data.frames中都有id列,所以合并函数将使用这些公共列合并数据。因此,在代码中省略id参数应该是可行的

merge<- merge(fishdata, mergingdata, all=TRUE, sort=FALSE)
编辑

查看您的帖子修改,我发现您的数据具有以下结构:

fishdata <- structure(list(date = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "23.11.2014", class = "factor"), 
    entry = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "shore", class = "factor"), 
    wpt = c(2L, 2L, 2L, 2L, 2L, 2L), zone = structure(c(1L, 1L, 
    1L, 1L, 1L, 1L), .Label = "DO", class = "factor"), transect = c(1L, 
    1L, 1L, 1L, 1L, 1L), gps = c(NA, NA, NA, NA, NA, NA), surveyor = structure(c(1L, 
    1L, 1L, 1L, 1L, 1L), .Label = "ev", class = "factor"), depth_code = c(NA, 
    NA, NA, NA, NA, NA), phase = structure(c(2L, 2L, 1L, 1L, 
    1L, 1L), .Label = c("S_PRIN", "S_STOP"), class = "factor"), 
    species = structure(c(2L, 1L, 2L, 2L, 1L, 1L), .Label = c("IP", 
    "TP"), class = "factor"), family = c(NA, NA, NA, NA, NA, 
    NA)), .Names = c("date", "entry", "wpt", "zone", "transect", 
"gps", "surveyor", "depth_code", "phase", "species", "family"
), class = "data.frame", row.names = c(NA, -6L))

mergingdata <- structure(list(start.time = c(10.34, 10.57, 10, 10.24, 9.15, 
9.39), end.time = c(10.5, 11.1, 10.2, 10.4, 9.3, 9.5), wpt = c(2L, 
2L, 3L, 3L, 4L, 4L), zone = structure(c(1L, 2L, 1L, 2L, 1L, 2L
), .Label = c("DO", "LT"), class = "factor")), .Names = c("start.time", 
"end.time", "wpt", "zone"), class = "data.frame", row.names = c(NA, 
-6L))
我按如下方式进行合并:

merge<- merge(fishdata, mergingdata, by=c("wpt","zone"), all=TRUE, sort=FALSE)
> merge(x = fishdata, y = mergingdata, all.x = TRUE)
  wpt zone       date entry transect gps surveyor depth_code  phase species family start.time end.time
1   2   DO 23.11.2014 shore        1  NA       ev         NA S_STOP      TP     NA      10.34     10.5
2   2   DO 23.11.2014 shore        1  NA       ev         NA S_STOP      IP     NA      10.34     10.5
3   2   DO 23.11.2014 shore        1  NA       ev         NA S_PRIN      TP     NA      10.34     10.5
4   2   DO 23.11.2014 shore        1  NA       ev         NA S_PRIN      TP     NA      10.34     10.5
5   2   DO 23.11.2014 shore        1  NA       ev         NA S_PRIN      IP     NA      10.34     10.5
6   2   DO 23.11.2014 shore        1  NA       ev         NA S_PRIN      IP     NA      10.34     10.5

请注意,我使用了
x.all=TRUE
,因为我们想要的是将x对象中的所有行
fishdata
与y对象的额外列合并(
mergingdata
)。所有这些都是通过使用两个对象的公共列作为索引来实现的

在“按”字段中添加一个额外的名称如何,是否有效<代码>合并谢谢你!它似乎起作用了!!!!非常感谢。起初它似乎是有效的,但它返回的观察结果比我最初得到的要多得多。我的fishdata有4261个观察值,如果我进行此合并,我会得到30491-并且我的tail()只显示nas这是我得到的警告消息:警告消息:1:In
[输出看起来正常(除了警告消息,与上面的注释相同),但我得到了近30000个观察值,我的数据集大约有4000个观察值。如果我看一下尾部,我得到了当时的NAs OK,请确保在mergingdata集合上显示这些线的wpt和区域与NA的组合。换句话说,检查
是否唯一(mergingdata[,c(“wpt”,“区域”)]
唯一(fishdata[,c)的子组(“wpt”、“区域”)]
> merge(x = fishdata, y = mergingdata, all.x = TRUE)
  wpt zone       date entry transect gps surveyor depth_code  phase species family start.time end.time
1   2   DO 23.11.2014 shore        1  NA       ev         NA S_STOP      TP     NA      10.34     10.5
2   2   DO 23.11.2014 shore        1  NA       ev         NA S_STOP      IP     NA      10.34     10.5
3   2   DO 23.11.2014 shore        1  NA       ev         NA S_PRIN      TP     NA      10.34     10.5
4   2   DO 23.11.2014 shore        1  NA       ev         NA S_PRIN      TP     NA      10.34     10.5
5   2   DO 23.11.2014 shore        1  NA       ev         NA S_PRIN      IP     NA      10.34     10.5
6   2   DO 23.11.2014 shore        1  NA       ev         NA S_PRIN      IP     NA      10.34     10.5