【问题标题】:How to replace some rows of a dataset from another dataset in R如何从R中的另一个数据集中替换数据集的某些行
【发布时间】:2015-10-24 20:26:12
【问题描述】:

我有两个数据集。一个叫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 ...

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

【问题讨论】:

  • 也许你可以试试geoIncendios[outliers$id,] <- outliers[1:11,]
  • 谢谢伙计。我必须回到基础...... :^)

标签: r replace dataset


【解决方案1】:

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

geoIncendios[outliers$id, ] <- outliers

但是,如果您的 id 列中存在不连续性,或者如果顺序与行号不完全相同,则更通用的解决方案是:

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

【讨论】:

  • 感谢尼克的回答。数据没有不连续性,因此第一个选项(正如@RHertel 提出的那样)将起作用(事实上,它确实如此)。但我会保留另一个,因为它将来可能会非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 2017-07-15
  • 2013-04-26
相关资源
最近更新 更多