【问题标题】:R select rows in matrix from another vector (match, %in)R从另一个向量中选择矩阵中的行(匹配,%in)
【发布时间】:2013-07-03 15:08:17
【问题描述】:

假设我有一个包含 6 列和 100000 行的数据框。我想根据另一个向量reducedScenIds(10,000 行)中的索引/数字来选择矩阵originScen 中的行。我通过检查 Y 的每个成员的值是否与数据框 X 的第 1 列中的值匹配来选择行。现在第一列可以与 Y 的每个值有多个匹配项。

所以我用下面的

reducedSet <- originScen[which(originScen[,1] %in% reducedScenarioIds),]

除了which%in% 似乎破坏了reducedScenarioIds 向量的顺序之外,我对结果没问题。最终的 reducedSet 具有基于在 reducedScenarioIds 向量中找到的 id 的升序选择的行,而不是完全相同的顺序。

originScen[,1]reducedScenarioIds 中的每个条目可以有重复条目

有人有替代解决方案吗?

谢谢

【问题讨论】:

  • 你应该可以删除which,直接使用%in%

标签: r select match


【解决方案1】:

试试这个:

reducedSet <- originScen[originScen[,1] %in% reducedScenarioIds,][order(na.exclude(match(originScen[,1], reducedScenarioIds))),]

【讨论】:

  • 感谢您的回答!完美运行。不明白怎么做。因此,首先使用 originScen[originScen[,1] %in%reduceScenarioIds,] 生成减少的场景集,然后第二部分将按照索引出现在 reduceScenarioIds 中的方式对其进行排序。这里的 na.exclude 数字如何?
  • 我添加了na.exclude 以删除originScen[,1] 包含reducedScenarioIds 中不存在的值的情况,因为match 在这些情况下的结果是NA
猜你喜欢
  • 2017-03-19
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
相关资源
最近更新 更多