hohiyan

ptt-r-20220617

Jun 17th, 2022 (edited)
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 4.12 KB | None | 0 0
  1. ## Tidyverse approach
  2. library(dplyr)
  3. library(tidyr)
  4.  
  5. text <- "20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125"
  6.  
  7. (mytext <- paste(rep(text, 10), collapse = ","))
  8. #> [1] "20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125,20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125"
  9.  
  10. md <- data.frame(text = unlist(strsplit(mytext, ",")))
  11.  
  12. head(md, 14)
  13. #>        text
  14. #> 1  20220404
  15. #> 2      板橋
  16. #> 3        38
  17. #> 4        40
  18. #> 5       0.1
  19. #> 6      4288
  20. #> 7       120
  21. #> 8  20220404
  22. #> 9      三重
  23. #> 10       25
  24. #> 11       60
  25. #> 12      0.2
  26. #> 13     4286
  27. #> 14      125
  28.  
  29. md |>
  30.   mutate(idx = (seq(nrow(md))-1) %/% 7) |>
  31.   group_by(idx) |>
  32.   mutate(col_name = paste0("v", seq_along(idx))) |>
  33.   pivot_wider(values_from = text, names_from = col_name)
  34. #> # A tibble: 20 × 8
  35. #> # Groups:   idx [20]
  36. #>      idx v1       v2    v3    v4    v5    v6    v7  
  37. #>    <dbl> <chr>    <chr> <chr> <chr> <chr> <chr> <chr>
  38. #>  1     0 20220404 板橋  38    40    0.1   4288  120  
  39. #>  2     1 20220404 三重  25    60    0.2   4286  125  
  40. #>  3     2 20220404 板橋  38    40    0.1   4288  120  
  41. #>  4     3 20220404 三重  25    60    0.2   4286  125  
  42. #>  5     4 20220404 板橋  38    40    0.1   4288  120  
  43. #>  6     5 20220404 三重  25    60    0.2   4286  125  
  44. #>  7     6 20220404 板橋  38    40    0.1   4288  120  
  45. #>  8     7 20220404 三重  25    60    0.2   4286  125  
  46. #>  9     8 20220404 板橋  38    40    0.1   4288  120  
  47. #> 10     9 20220404 三重  25    60    0.2   4286  125  
  48. #> 11    10 20220404 板橋  38    40    0.1   4288  120  
  49. #> 12    11 20220404 三重  25    60    0.2   4286  125  
  50. #> 13    12 20220404 板橋  38    40    0.1   4288  120  
  51. #> 14    13 20220404 三重  25    60    0.2   4286  125  
  52. #> 15    14 20220404 板橋  38    40    0.1   4288  120  
  53. #> 16    15 20220404 三重  25    60    0.2   4286  125  
  54. #> 17    16 20220404 板橋  38    40    0.1   4288  120  
  55. #> 18    17 20220404 三重  25    60    0.2   4286  125  
  56. #> 19    18 20220404 板橋  38    40    0.1   4288  120  
  57. #> 20    19 20220404 三重  25    60    0.2   4286  125
  58.  
  59. ---
  60. ## data.table approach
  61. library(data.table)
  62.  
  63. text <- "20220404,板橋,38,40,0.1,4288,120,20220404,三重,25,60,0.2,4286,125"
  64.  
  65. mytext <- paste(rep(text, 10), collapse = ",")
  66.  
  67. md <- data.table(text = unlist(strsplit(mytext, ",")))
  68.  
  69. md[, idx:=(seq(.N)-1)%/%7]
  70.  
  71. md[, col_name:=paste0("v",1:.N), by=idx]
  72.  
  73. dcast(md, idx ~ col_name, value.var = c("text"))
  74. #>     idx       v1   v2 v3 v4  v5   v6  v7
  75. #>  1:   0 20220404 板橋 38 40 0.1 4288 120
  76. #>  2:   1 20220404 三重 25 60 0.2 4286 125
  77. #>  3:   2 20220404 板橋 38 40 0.1 4288 120
  78. #>  4:   3 20220404 三重 25 60 0.2 4286 125
  79. #>  5:   4 20220404 板橋 38 40 0.1 4288 120
  80. #>  6:   5 20220404 三重 25 60 0.2 4286 125
  81. #>  7:   6 20220404 板橋 38 40 0.1 4288 120
  82. #>  8:   7 20220404 三重 25 60 0.2 4286 125
  83. #>  9:   8 20220404 板橋 38 40 0.1 4288 120
  84. #> 10:   9 20220404 三重 25 60 0.2 4286 125
  85. #> 11:  10 20220404 板橋 38 40 0.1 4288 120
  86. #> 12:  11 20220404 三重 25 60 0.2 4286 125
  87. #> 13:  12 20220404 板橋 38 40 0.1 4288 120
  88. #> 14:  13 20220404 三重 25 60 0.2 4286 125
  89. #> 15:  14 20220404 板橋 38 40 0.1 4288 120
  90. #> 16:  15 20220404 三重 25 60 0.2 4286 125
  91. #> 17:  16 20220404 板橋 38 40 0.1 4288 120
  92. #> 18:  17 20220404 三重 25 60 0.2 4286 125
  93. #> 19:  18 20220404 板橋 38 40 0.1 4288 120
  94. #> 20:  19 20220404 三重 25 60 0.2 4286 125
  95.  
  96. <sup>Created on 2022-06-17 by the [reprex package](https://reprex.tidyverse.org) (v2.0.1)</sup>
  97.  
Add Comment
Please, Sign In to add comment