R 获取数据集的一半值

R 获取数据集的一半值,r,R,我提前道歉这是我的第一篇帖子 我有以下数据集。我想获得船只达到其最大速度一半的时间(例如船只1 6秒,船只2 4秒)。我有20种不同的船只来获得其半速时间值。非常感谢 vessel time speed vessel1 1 6 vessel1 2 7 vessel1 3 10 vessel1 4 16 vessel1 5 18 vessel1 6 20 vessel1 7 22 vessel1 8 24 vessel1 9 36 vessel1 10

我提前道歉这是我的第一篇帖子

我有以下数据集。我想获得船只达到其最大速度一半的时间(例如船只1 6秒,船只2 4秒)。我有20种不同的船只来获得其半速时间值。非常感谢

vessel  time    speed 
vessel1 1   6
vessel1 2   7
vessel1 3   10
vessel1 4   16
vessel1 5   18
vessel1 6   20
vessel1 7   22
vessel1 8   24
vessel1 9   36
vessel1 10  37
vessel1 11  38
vessel1 12  38
vessel1 13  39
vessel1 14  40
vessel1 15  41
vessel1 16  41
vessel1 17  41
vessel2 1   7
vessel2 2   9
vessel2 3   12
vessel2 4   15
vessel2 5   20
vessel2 6   22
vessel2 7   23
vessel2 8   24
vessel2 9   25
vessel2 10  26
vessel2 11  27
vessel3 12  28
vessel4 13  29
vessel5 14  30

应使用以下代码(将read.table替换为read.csv(“youfilename.csv”):

mydf=max(x[,3])/2,2]))
第一行读取数据

第二行只是为方便起见给他们起了标准化的名字

第三行通过每个船只的data.frame,找到机器超过半速的第一个时间点(即>=max(speed)/2)。

您可以执行以下操作:

d <- read.table(header=TRUE, text=
"vessel  time    speed 
vessel1 1   6
vessel1 2   7
vessel1 3   10
vessel1 4   16
vessel1 5   18
vessel1 6   20
vessel1 7   22
vessel1 8   24
vessel1 9   36
vessel1 10  37
vessel1 11  38
vessel1 12  38
vessel1 13  39
vessel1 14  40
vessel1 15  41
vessel1 16  41
vessel1 17  41
vessel2 1   7
vessel2 2   9
vessel2 3   12
vessel2 4   15
vessel2 5   20
vessel2 6   22
vessel2 7   23
vessel2 8   24
vessel2 9   25
vessel2 10  26
vessel2 11  27
vessel3 12  28
vessel4 13  29
vessel5 14  30")

which.halfspeed <- function(speed) {
  half <- max(speed)/2
  sum(speed<=half)
}

index <- tapply(d$speed, d$vessel, which.halfspeed)
index
mapply('[', split(d$time, d$vessel), index)
d获取示例数据:

df <- read.table(text="
vessel  time    speed 
vessel1 1   6
vessel1 2   7
vessel1 3   10
vessel1 4   16
vessel1 5   18
vessel1 6   20
vessel1 7   22
vessel1 8   24
vessel1 9   36
vessel1 10  37
vessel1 11  38
vessel1 12  38
vessel1 13  39
vessel1 14  40
vessel1 15  41
vessel1 16  41
vessel1 17  41
vessel2 1   7
vessel2 2   9
vessel2 3   12
vessel2 4   15
vessel2 5   20
vessel2 6   22
vessel2 7   23
vessel2 8   24
vessel2 9   25
vessel2 10  26
vessel2 11  27
vessel3 12  28
vessel4 13  29
vessel5 14  30"
,header = T)

我认为如果你调整你的问题,你将能够更有效地得到帮助。你试图用什么方法来解决这个问题?您的数据是如何存储的。。。它已经在数据帧或向量中,还是仍然在CSV中?这两个数字代表什么?数据存储在csv中。时间以秒为单位,速度以英里/小时为单位。我正在尝试获取每辆车达到其最大速度一半时的秒数。如果只有船只入口(例如vessel3),请编辑您的问题!明亮的非常感谢!多好的解决方案啊!非常感谢。
df <- read.table(text="
vessel  time    speed 
vessel1 1   6
vessel1 2   7
vessel1 3   10
vessel1 4   16
vessel1 5   18
vessel1 6   20
vessel1 7   22
vessel1 8   24
vessel1 9   36
vessel1 10  37
vessel1 11  38
vessel1 12  38
vessel1 13  39
vessel1 14  40
vessel1 15  41
vessel1 16  41
vessel1 17  41
vessel2 1   7
vessel2 2   9
vessel2 3   12
vessel2 4   15
vessel2 5   20
vessel2 6   22
vessel2 7   23
vessel2 8   24
vessel2 9   25
vessel2 10  26
vessel2 11  27
vessel3 12  28
vessel4 13  29
vessel5 14  30"
,header = T)
library(dplyr)

df %>%
  group_by(vessel) %>%              # for each vessel
  filter(speed >= max(speed)/2) %>% # keep all speed values above or equal to the half of max speed
  filter(speed == min(speed)) %>%   # keep the minimum speed value
  ungroup()                         # forget the grouping

# # A tibble: 5 x 3
#    vessel  time speed
#    <fctr> <int> <int>
# 1 vessel1     7    22
# 2 vessel2     4    15
# 3 vessel3    12    28
# 4 vessel4    13    29
# 5 vessel5    14    30