【问题标题】:Identifying a value in one column based off a value in a different column but same row根据不同列但同一行中的值识别一列中的值
【发布时间】:2020-03-08 20:34:20
【问题描述】:

我有一些数据来自我们试图测量制动反应时间的驾驶模拟。使用下面的示例数据作为上下文,我感兴趣的列是时间、刹车(范围 0-1;代表施加在刹车踏板上的力)和沿道路的距离。在驾驶场景中,受试者沿着笔直的道路行驶,并在 460 米(沿道路值的距离)处开始一个事件。第一个感兴趣的值是时间列中的对应值,用于表示此事件何时开始。我们要确定的第二个值是制动值超​​过 0.2 的时间。这两点之间的差异(使用时间列中的值)将为我们提供反应时间。

我对使用 R 非常陌生,到目前为止,我已经能够使用代码 Log$V1[Log$V5==460] 识别出第一个感兴趣的值。但是,这并没有太大的帮助,因为沿道路的距离列中的值通常不是整数,而是有几个小数位。所以我真的很想找到 460 和 461 之间的距离。

如果有人能指出我正确的方向,那就太好了,因为我被困住了。

谢谢。

【问题讨论】:

  • 您的第一行实际上是变量名称,因此您首先需要查看您是如何导入数据的。
  • 请使用dput 添加数据并显示相同的预期输出。请阅读有关how to ask a good question 的信息以及如何提供reproducible example

标签: r


【解决方案1】:

我们可以使用cut 函数创建“bins”来“离散化”一个连续变量:

cut(cars$dist, breaks = seq(1, 100, 20))

返回:

 [1] (1,11]  (1,11]  (1,11]  (21,31] (11,21] (1,11]  (11,21] (21,31] (31,41] (11,21] (21,31]
[12] (11,21] (11,21] (21,31] (21,31] (21,31] (31,41] (31,41] (41,51] (21,31] (31,41] (51,61]
[23] (71,81] (11,21] (21,31] (51,61] (31,41] (31,41] (31,41] (31,41] (41,51] (41,51] (51,61]
[34] (71,81] (81,91] (31,41] (41,51] (61,71] (31,41] (41,51] (51,61] (51,61] (61,71] (61,71]
[45] (51,61] (61,71] <NA>    <NA>    <NA>    (81,91]
Levels: (1,11] (11,21] (21,31] (31,41] (41,51] (51,61] (61,71] (71,81] (81,91]

另外:如果您发布 minimal reproducible example 而不是数据图像,则更容易给您一个好的答案。 this 是获得好答案的另一个极好的信息来源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2021-03-31
    相关资源
    最近更新 更多