Как получить все данные в кадре данных, соответствующие каждому n-му значению переменной в r? - PullRequest
0 голосов
/ 15 января 2019

Предположим, у меня есть вектор, содержащий временные рамки, где один кадр = 1/60 секунды:

x <- 0:120  

Этот вектор является частью кадра данных, который имеет другие переменные, например ::10000

df <- data.frame(x = 0:120, 
speed = seq(41, 48, length.out = 121), 
position = seq(25.56, 270.23, length.out=121)) 

Я хочу получить значения всех переменных, когда каждый раз завершается 1 секунда. Таким образом, для x это означает 60 и 120. В df:

data.frame(x = c(60,120),
speed = c(44.50000, 48.00000), 
position = c(147.89500, 270.23000))

Как я могу получить эти значения, используя dplyr? Я пробовал разные варианты dplyr::lag и dplyr::lead, но я не могу понять это.

Ответы [ 3 ]

0 голосов
/ 15 января 2019

Это работает, если вы не возражаете, включая строку, где x = 0:

df <- data.frame(x = 0:120, speed = seq(41, 48, length.out = 121), 
                 position = seq(25.56, 270.23, length.out=121))

df %>%
  filter(x %% 60 == 0) 
0 голосов
/ 15 января 2019

Если вы хотите, чтобы это повторялось для нераскрытого числа переменных в этих интервалах, тогда установите вышеприведенное уравнение с помощью markus на:

df[df$x%%60==0, ]

сделает свое дело. Это означает подмножество df, где df $ x делится равномерно (%% по модулю означает отсутствие остатка) на 60.

Если вы хотите сделать это с помощью dplyr, вы должны сделать следующее:

filter(df, x%%60==0)

Если у вас нулевая строка, она все равно будет отображаться, поэтому вам нужно будет сказать & x!=0, чтобы удалить эти 0 строк.

0 голосов
/ 15 января 2019

Простой способ выполнить то, что вы хотите, это отфильтровать только те строки, где x, разделенный на 60, не имеет остатка:

df %>% filter(x / 60 == round(x / 60))

Если вы также хотите удалить первую строку, где x равно 0:

df %>% filter(x / 60 == round(x / 60) & x != 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...