मैं एक कॉलम के लिए फ्लैग वैरिएबल बनाने की कोशिश कर रहा हूं जो position कॉलम की प्रत्येक घटना के लिए बदलना चाहिए। उदाहरण के लिए, यहां एक data_frame है:

df <- data_frame(
  variable = c('Position',
               'Department',
               'Location',
               'Position',
               'Department',
               'Location',
               'Location'
               )
)

df
    # A tibble: 7 x 1
      variable  
      <chr>     
    1 Position  
    2 Department
    3 Location  
    4 Position  
    5 Department
    6 Location  
    7 Location 

मैं इस ID वैरिएबल के समान कुछ कैसे बना सकता हूं? मैं अब इस चर पर विभाजित कर सकता हूं और कोशिकाओं को मर्ज कर सकता हूं जैसा मुझे चाहिए।

# A tibble: 7 x 2
  variable   id   
  <chr>      <chr>
1 Position   A    
2 Department A    
3 Location   A    
4 Position   B    
5 Department B    
6 Location   B    
7 Location   B  

variable कॉलम में डुप्लिकेट वाले किसी भी सेल को मर्ज करने का एक तरीका और भी बेहतर होगा।

2
elliot 19 जून 2018, 23:27

2 जवाब

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

हम 'वैरिएबल' में 'स्थिति' तत्व की घटना के आधार पर एक तार्किक vector बनाते हैं, संचयी योग (cumsum) प्राप्त करते हैं और उस संख्यात्मक सूचकांक का उपयोग LETTERS में बदलने के लिए करते हैं।

library(dplyr)
df %>% 
   mutate(id = LETTERS[cumsum(variable== 'Position')])
# A tibble: 7 x 2
#  variable   id   
#  <chr>      <chr>
#1 Position   A    
#2 Department A    
#3 Location   A    
#4 Position   B    
#5 Department B    
#6 Location   B    
#7 Location   B    
3
akrun 19 जून 2018, 23:29

एक आधार R दृष्टिकोण duplicated के साथ होगा। मैं बिल्ट-इन वेक्टर LETTERS को कम करने के @akrun के विचार को उधार लूंगा।

LETTERS[duplicated(df$variable) + 1L]
#[1] "A" "A" "A" "B" "B" "B" "B"

तो आपको बस इतना करना है कि इस परिणाम को नए कॉलम में असाइन करें।

df$id <- LETTERS[duplicated(df$variable) + 1L]
2
Rui Barradas 19 जून 2018, 23:35