R-在线图中获得2个数据集的x值,其中y == 80

时间:2015-04-23 16:50:34

标签: r plot

我有两个单独的.csv文件,我已加载到R(版本3.1.2),并使用plot()函数生成一个包含两个文件数据的简单绘图,如下所示:

plot(db1[ ,2],db1[ ,5], type = "l", xlab = "area", ylab = "represented", main = "title", frame.plot = FALSE, col = 'blue', pch = 20) 
lines(db2[ ,3], db2[ ,7], col="red", pch = 20, )
abline(h=80,col= 'black',lty=2)

这是情节:

Plot

我想要做的是为两个数据集中的每一个获取x的值,其中y == 80.数据集中不存在这些值 - 我需要对它们进行插值。可以找到示例数据集on my Google Drive here

通过文献搜索,我可以看到我可以使用identifylocate并使用鼠标来查找y值,但我想要比这些函数提供的更准确的值。我可以添加到绘图代码中以获取x的特定值,其中y == 80吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

由于x值和y值都直接来自df,因此您可以简单地对数据框进行子集化。

# Blue plot
df[df[, 5] == 80, 2]

# Red plot
df[df[, 7] == 80, 3]

对于蓝线,这会得到df第二列的值,即df[, 2],使第五列df[, 5]等于80.同样为红线

逐行对数据进行子集化的语法如下:

df[<row subsetting>, <column selection>]

行子集化可以是要选择的索引列表,也可以是我们希望选择的索引处TRUE的逻辑向量。在这种情况下,我们使用后者。列选择只是要返回的列的列表,在这种情况下,我们只是获得一列。