Найти первое значение в таблице в R - PullRequest
0 голосов
/ 06 июня 2019

у меня две колонки миль в час, порог, авто.Я хотел бы написать некоторый код для возврата MPH для машины столбца, когда первый экземпляр порога равен 1.

MPH         Threshold               Car 
30               0                    A
31               0                    A
32               1                    A
33               1                    A
34               1                    A
35               1                    A
30               0                    B
31               0                    B
32               0                    B
33               0                    B
34               1                    B
35               1                    B

Желаемый результат:

Value   Car
32       A
34       B

Ответы [ 3 ]

1 голос
/ 06 июня 2019

Вы также можете сделать

library(dplyr)

df %>%
  filter(Threshold == 1) %>%
  subset(!duplicated(Car))


library(data.table)
dt <- data.table(df)
dt[Threshold == 1, ][!duplicated(Car),]
1 голос
/ 06 июня 2019

Предполагая, что у вас всегда будет хотя бы одно значение, где Threshold = 1 для каждого Car мы можем сделать

library(dplyr)

df %>%
  group_by(Car) %>%
  slice(which.max(Threshold == 1)) %>%
  select(-Threshold)

#    MPH  Car  
#  <int> <fct>
#1    32  A    
#2    34  B      

использования базы R ave

df[with(df, ave(Threshold == 1, Car, FUN = function(x) 
            seq_along(x) == which.max(x))), ]
0 голосов
/ 06 июня 2019

Опция с data.table

library(data.table)
i1 <- setDT(df)[, .I[which(Threshold == 1)[1]], Car]$V1
df[i1, .(Value = MPH, Car)]
#    Value Car
#1:    32   A
#2:    34   B

data

df <- structure(list(MPH = c(30L, 31L, 32L, 33L, 34L, 35L, 30L, 31L, 
32L, 33L, 34L, 35L), Threshold = c(0L, 0L, 1L, 1L, 1L, 1L, 0L, 
0L, 0L, 0L, 1L, 1L), Car = c("A", "A", "A", "A", "A", "A", "B", 
"B", "B", "B", "B", "B")), class = "data.frame", row.names = c(NA, 
-12L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...