Обработка данных: редактирование строк по условию - PullRequest
0 голосов
/ 17 октября 2018

Я хочу отредактировать один из моих столбцов на основе информации о некоторых других переменных.Вот данные и вопрос под ним:

Current Data: 
time_played     Round     Type
NA                1        Pre
10                1        Post
NA                Bye      Pre
NA                Bye      Post
NA                3        Pre
96                3        Post
NA                4        Pre
79                4        Post

И я хотел бы изменить его на этот формат:

time_played     Round     Type
NA                1        Pre
10                1        Post
10                Bye      Pre
0                 Bye      Post
0                 3        Pre
96                3        Post
96                4        Pre
79                4        Post

, то есть: «Pre» раунда равнона «Пост» предыдущего раунда, где Bye рассматривается как раунд, за исключением того, что его пост будет иметь 0 time_played

Пожалуйста, дайте мне знать, как это можно сделать на R

Большое спасибозаранее

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Другое (потенциально более быстрое) dplyr решение:

df %>%
  mutate(time_played = ifelse(Type == "Pre" & lag(Type) == "Post", lag(time_played), 
                           ifelse(Round == "Bye" & Type == "Post", 0, time_played)),
         time_played = ifelse(lag(Round) == "Bye" & lag(time_played) == 0, 0, time_played))
0 голосов
/ 17 октября 2018

Мы можем использовать fill от tidyr

library(tidyverse)
df1 %>%
   mutate(time_played = replace(time_played, Round == "Bye" & 
              Type == "Post", 0)) %>%
   fill(time_played)
#   time_played Round Type
#1          NA     1  Pre
#2          10     1 Post
#3          10   Bye  Pre
#4           0   Bye Post
#5           0     3  Pre
#6          96     3 Post
#7          96     4  Pre
#8          79     4 Post
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...