Замените значения в строке выше на основе условия - PullRequest
0 голосов
/ 18 октября 2018

Я хочу заменить значения в строке выше на основе условия следующим образом:

Если pc_no = DELL, присвойте значения pc_no и cust_id в строку выше для event_rep и loc_id.После этого хотите удалить строку, в которой есть «DELL».

id   pc_no cust_id   event_id event_date    event_mark  event_rep    loc_id
1    51     NA       CC       2018-08-15    SE          NA           NA      
2    DELL   IBM      NA       2018-08-16    SC          NA           NA 
3    53     NA       CC       2018-08-17    SD          UNK          SUW
4    54     NA       CC       2018-08-18    SF          UNK          NA  
5    DELL  ACER      CC       2018-08-19    SV          UNK          NA 

IE должен быть таким:

id   pc_no cust_id   event_id event_date    event_mark  event_rep    loc_id
1    51     NA       CC       2018-08-15    SE          DELL         IBM      
3    53     NA       CC       2018-08-17    SD          UNK          SUW
4    54     NA       CC       2018-08-18    SF          DELL         ACER  

Как я могу сделать это в R?Очень признателен за вашу помощь!

1 Ответ

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

A Base R решение

#Get indices of rows to where pc_no = DELL
inds <- which(df$pc_no == "DELL")

#Get values from pc_no and cust_id and assign it to previous row
df[inds - 1, c("event_rep", "loc_id")] <- df[inds, c("pc_no", "cust_id")]

#Remove the rows
df1 <- df[-inds, ]

df1
#  id pc_no cust_id event_id event_date event_mark event_rep loc_id
#1  1    51    <NA>       CC 2018-08-15         SE      DELL    IBM
#3  3    53    <NA>       CC 2018-08-17         SD       UNK    SUW
#4  4    54    <NA>       CC 2018-08-18         SF      DELL   ACER
...