celestialgod

data split

Feb 24th, 2017
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.19 KB | None | 0 0
  1. firms <- paste0("Firm", sprintf("%03i", 1L:500L))
  2. brands <- paste0("Brand", sprintf("%03i", 1L:100L))
  3. brandsList <- replicate(length(firms), sample(brands, sample(1L:20L, 1L)))
  4. brandsFirms <- unlist(mapply(function(x, y) c(x, y), firms, brandsList, USE.NAMES = FALSE))
  5. head(brandsFirms, 24L)
  6. #  [1] "Firm001"  "Brand046" "Brand024" "Brand021" "Brand050" "Brand011"
  7. #  [7] "Brand078" "Brand003" "Brand061" "Brand016" "Brand085" "Brand057"
  8. #  [13] "Firm002"  "Brand006" "Brand072" "Brand024" "Brand057" "Brand083"
  9. #  [18] "Brand082" "Brand044" "Brand099" "Brand075" "Firm003"  "Brand058"
  10.  
  11. # 所以firms1是你的vector 1,brandsFirms是你的vector 2
  12.  
  13. loc <- match(firms, brandsFirms)
  14. idx <- findInterval(seq_along(brandsFirms), loc)
  15. idx_firms <- firms[idx]
  16. idx_firms[loc] <- "firms"
  17. output <- split(brandsFirms, idx_firms)
  18. output$firms <- NULL
  19. head(output, 3L)
  20. # $Firm001
  21. # [1] "Brand046" "Brand024" "Brand021" "Brand050" "Brand011" "Brand078"
  22. # [7] "Brand003" "Brand061" "Brand016" "Brand085" "Brand057"
  23. #
  24. # $Firm002
  25. # [1] "Brand006" "Brand072" "Brand024" "Brand057" "Brand083" "Brand082"
  26. # [7] "Brand044" "Brand099" "Brand075"
  27. #
  28. # $Firm003
  29. # [1] "Brand058" "Brand069" "Brand047"
Advertisement
Add Comment
Please, Sign In to add comment