我有两个数据集。一个原始名为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。
答案 0 :(得分:0)
在您显示的数据中,geoIncendios$id
只是data.frame
的行号。假设整个数据集都是如此,你可以使用(正如@RHertel评论中所建议的那样)
geoIncendios[outliers$id, ] <- outliers
但是,如果您的id列中存在不连续性,或者订单与行号严格不同,则更通用的解决方案是:
geoIncendios[match(outliers$id, geoIncendios$id), ] <- outliers