【问题标题】:Create a scatter plot of data which have the same unique ids but are unsorted in r创建具有相同唯一 ID 但在 r 中未排序的数据散点图
【发布时间】:2025-12-31 13:50:16
【问题描述】:

我有两个具有相同唯一 ID 的数据集,但是,它们没有根据唯一 ID 进行排序。

有人知道我如何根据唯一 ID 绘制数据吗?

第一个数据集示例:

  Id Results
1 3e 10
2 2  15
3 1c 16

第二个数据集示例:

  Id Results
1 1c 10
2 2  15
3 3e 16

【问题讨论】:

  • 您可以检查?order 或转换为factor 指定levelsdf1$Id <- factor(df1$Id, levels = sort(unique(df1$Id))) 和类似df2
  • 你说他们有相同的ID,对吧?如果不是,则根据“Ids”的intersect 对数据集进行子集化,即uIds <- intersect(df1$Id, df2$Id); df1S <- subset(df1, Id %in% uIds),类似于df2
  • yes 相同唯一 ID 的两个数据集。它类似于测量与模拟。 Id 仅存在一次,并且与其他数据集的数量相同。但是,有不同的排序,因此当我绘制散点图时,错误的值会相互比较 plot(x,y)。
  • True :) 只是尝试创建一个示例。我有 5234 个数据点。我在 r 中导入了它们,但是它们的排序方式不同。这意味着第一个唯一 ID 与其他数据集中的不同(此处 ID 在第五行)现在我需要让它们与第一个数据集中的相同,这样我就可以绘制结果一和结果二。

标签: r statistics


【解决方案1】:

您可以使用 merge 创建单个数据集,其中 Id 对齐,然后绘制它们。

df1 = read.table(text="R Id Results
1 3e 10
2 2 15
3 1c 16",
header=TRUE, stringsAsFactors=FALSE)

df2 = read.table(text="R Id Results
1 1c 10
2 2 15
3 3e 16",
header=TRUE, stringsAsFactors=FALSE)

Merged = merge(df1[,2:3], df2[,2:3], by="Id")
plot(Merged[,2:3], pch=20)

如果您真的不喜欢合并数据集的解决方案,您可以创建一个索引,让您查找 df2 中的哪个 Id 与 df1 中的 Id 匹配。

df2_index = seq_along(df2)
names(df2_index) = df2$Id
plot(df1$Result, df2$Result[df2_index[df1$Id]], pch=20)

或者更简单的是

plot(df1$Result, df2$Result[match(df1$Id, df2$Id)], pch=20)

【讨论】:

  • 酷。没有考虑合并它们。但是,你知道,我怎么能把两张桌子分开?我只想让两个表的行都根据唯一 ID 进行排序。或者至少根据 id 而不是它们所在的行绘制结果。
  • 添加回答
  • 不能支持您的问题。但这正是我一直在寻找的。再次感谢。
最近更新 更多