मैं निम्नानुसार स्थिति के आधार पर मानों को ऊपर की पंक्ति में बदलना चाहता हूं:

यदि 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 

आईई ऐसा होना चाहिए:

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  

मैं इसे आर में कैसे कर सकता हूं? आपकी मदद के लिए बहुत सराहना की!

1
kimi 18 अक्टूबर 2018, 17:50

1 उत्तर

सबसे बढ़िया उत्तर

एक आधार आर समाधान

#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
1
Ronak Shah 18 अक्टूबर 2018, 14:58