如何从R中的另一个数据集替换数据集的某些行

时间:2015-08-02 18:37:11

标签: r replace dataset

我有两个数据集。一个原始名为geoIncendios,另一个名为outliers。你可以想象后者是由前者的异常值组成的子集。在分析它们之后,我发现了错误并纠正了它们。所以现在我想用第二个数据集替换第一个数据集的行。

以下是两个数据集的结构,可以为您提供一个想法:

> str(geoIncendios)
'data.frame':   100 obs. of  9 variables:
 $ id           : num  1 2 3 4 5 6 7 8 9 10 ...
 $ municipio    : chr  "LLANES" "CANIZA" "CANGAS DEL NARCEA" "PILONA" ...
 $ num_incendios: num  1725 1521 1349 1341 1290 ...
 $ ha_quemadas  : num  79 70 34 81 96 56 4 87 18 69 ...
 $ ranking      : num  1 2 3 4 5 6 7 8 9 10 ...
 $ comunidad    : chr  "ASTURIAS" "GALICIA" "ASTURIAS" "ASTURIAS" ...
 $ provincia    : chr  "ASTURIAS" "PONTEVEDRA" "ASTURIAS" "ASTURIAS" ...
 $ lon          : num  -4.76 -8.27 -6.55 -5.35 -7.11 ...
 $ lat          : num  43.4 42.2 43.2 43.3 42.2 ...

> str(outliers)
'data.frame':   11 obs. of  9 variables:
 $ id           : num  9 13 22 24 37 40 43 45 68 93 ...
 $ municipio    : chr  "NEVES" "LENA" "TOMINO" "GRADO" ...
 $ num_incendios: num  1081 929 818 744 641 ...
 $ ha_quemadas  : num  18 74 73 49 61 48 38 21 46 8 ...
 $ ranking      : num  9 13 22 24 37 40 43 45 68 93 ...
 $ comunidad    : chr  "GALICIA" "ASTURIAS" "GALICIA" "ASTURIAS" ...
 $ provincia    : chr  "PONTEVEDRA" "ASTURIAS" "PONTEVEDRA" "ASTURIAS" ...
 $ lon          : num  -8.41 -5.84 -8.73 -6.07 -8.31 ...
 $ lat          : num  42.1 43.1 42 43.4 42.1 ...

再次我想用geoIncendios数据集中的那些数据集覆盖outliers数据集的11行。我相信我必须使用某种循环。但是如果有最简单的解决方案(我怀疑它),这些是行的ID:9,13,22,24,37,40, 43,45,68,93和99。

1 个答案:

答案 0 :(得分:0)

在您显示的数据中,geoIncendios$id只是data.frame的行号。假设整个数据集都是如此,你可以使用(正如@RHertel评论中所建议的那样)

geoIncendios[outliers$id, ] <- outliers

但是,如果您的id列中存在不连续性,或者订单与行号严格不同,则更通用的解决方案是:

geoIncendios[match(outliers$id, geoIncendios$id), ] <- outliers