首页 > 解决方案 > R如何匹配数据框以检索元素

问题描述

我有一个包含 5000 行的数据框,其中包含市政数据,我只需要从中提取与特定名称集匹配的行。我正在使用 for 循环通过我的数据框迭代该集合。

这适用于 R 3.6.0

data <- NULL
for (i in mun.names){
  data <- area.mun[area.mun[, 1] == i, ]
}

该对象mun.names包含我需要匹配的城市。该对象area.mun有两个列( NAME 和 AREA )。两个对象的第一列都有相应格式的市镇名称。

在 for 循环结束时,我生成的对象data始终只有一个值,即对象的最后一个自治市area.mun。这是一个简单的错误。我感谢任何形式的反馈。

标签: rfor-loopmatrix

解决方案


将您的“mun.names”转换为数据框:

mun.names <- data.frame(mun.names)

将列名更改为“NAME”:

colnames(mun.names) <- c(NAME)

将您的“area.mun”转换为数据框:

area.mun <- data.frame(area.mun)

使用合并命令提取匹配的行:

df <- merge(area.mun,mun.names,by.x="NAME",by.y="NAME")

您还可以使用 all.x=TRUE 和 all.y=TRUE 从 mun.names 和 area.mun 数据帧中获取所有不匹配的行

df <- merge(area.mun,mun.names,by.x="NAME",by.y="NAME",all.x=TRUE, all.y=TRUE)

推荐阅读