R 获取数据集的一半值
我提前道歉这是我的第一篇帖子 我有以下数据集。我想获得船只达到其最大速度一半的时间(例如船只1 6秒,船只2 4秒)。我有20种不同的船只来获得其半速时间值。非常感谢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
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