почему мой Mac перестает работать, когда я использую функцию слияния - PullRequest
1 голос
/ 21 сентября 2019

Я пытаюсь использовать функцию слияния для этих двух наборов данных, но мой Mac перестает работать, когда я использую этот код:

       WithBus<-merge(bus,ID, all.y = TRUE)

здесь str для обоих

str(bus)
'data.frame':   2456 obs. of  11 variables:
 $ SAMPN.1    : Factor w/ 3847 levels "    2","    5",..: 3 3 5 10 15 19 22 28 29 33 ...
 $ PERNO.1    : Factor w/ 8 levels "1","2","3","4",..: 1 2 1 1 1 1 1 1 1 2 ...
 $ PLANO.1    : Factor w/ 21 levels " 2"," 3"," 4",..: 1 1 1 1 1 1 1 1 3 1 ...
 $ loop.1     : Factor w/ 8 levels "1","2","3","4",..: 2 2 2 2 2 2 2 2 3 2 ...
 $ MODE1.1    : Factor w/ 4 levels "1","2","3","4": 2 2 2 4 4 2 4 2 2 4 ...
 $ walk.1     : Factor w/ 14960 levels "-0.000235854687434333",..: 11898 11203 1019 9365 8897 9602 13905 2151 9022 10979 ...
 $ car.1      : Factor w/ 15009 levels " 2909"," 2976",..: 4835 5378 12560 13625 955 9463 2999 13452 10634 3638 ...
 $ bus.1      : Factor w/ 14960 levels "-0.00234902134438422",..: 13632 13733 13564 13419 14135 13883 13381 13719 13652 13549 ...
 $ utipassen.1: Factor w/ 14960 levels "-0.000221832418741408",..: 241 11291 9145 10402 6150 12653 9866 12688 11484 4026 ...
 $ bus.walk   : int  2 2 2 2 2 2 2 2 2 2 ...
 $ mode.bus   :'data.frame':    2456 obs. of  1 variable:
  ..$ V1: num  4 4 4 4 4 4 4 4 4 4 ...


> str(ID)
'data.frame':   24812 obs. of  16 variables:
 $ SAMPN    : Factor w/ 3853 levels "    2","    5",..: 1 1 1 1 1 1 1 1 1 1 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ MODE1    : Factor w/ 4 levels "1","2","3","4": 2 2 2 2 2 2 2 2 2 2 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ PERNO    : Factor w/ 8 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 2 2 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ PLANO    : Factor w/ 24 levels " 2"," 3"," 4",..: 1 2 3 4 1 2 3 4 5 6 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ loop     : Factor w/ 8 levels "1","2","3","4",..: 2 2 2 2 2 2 2 2 2 2 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ ARR_HR   : Factor w/ 24 levels " 1"," 2"," 3",..: 8 9 10 17 8 13 13 16 17 17 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ ARR_MIN  : Factor w/ 60 levels " 0"," 1"," 2",..: 26 49 21 51 6 11 26 31 11 21 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ start_hr : Factor w/ 24 levels " 1"," 2"," 3",..: 8 9 10 17 7 13 13 16 16 17 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ start_min: Factor w/ 60 levels " 0"," 1"," 2",..: 21 31 6 11 41 6 21 6 51 16 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ VEHLIC   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ licence2 : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ TPURP    : Factor w/ 22 levels "(1) Working at home (for pay)",..: 10 4 16 12 16 9 16 5 5 5 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ walk     : Factor w/ 21527 levels "-0.000134409654909421",..: 13885 1223 14878 4464 9652 10224 6089 2794 3502 17 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ car      : Factor w/ 21527 levels "-0.000667367461145929",..: 9204 14366 11706 18959 19625 9781 9745 16400 16530 8704 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ bus      : Factor w/ 21527 levels "-0.00234902134438422",..: 9126 8248 18610 8619 8289 16137 7522 7426 9999 9001 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...
 $ utipassen: Factor w/ 21527 levels "-0.000203965202547889",..: 8269 7469 7905 7637 19815 20050 20391 720 5877 4429 ...
  ..- attr(*, "names")= chr  "3" "4" "5" "6" ...

У меня былобольший набор данных, и у меня никогда не было такого рода проблем.память и процессор моего Mac достаточно хороши, и я знаю, что проблема в другом.Не могли бы вы проверить это?

1 Ответ

1 голос
/ 21 сентября 2019

Может быть несколько проблем.

1) Имена столбцов не совпадают в обоих наборах данных (SAMPN.1 против SAMPN)

2) by или (by.x, by.y - еслиимена столбцов разные) не указаны

3) merge будет медленнее.Используйте left_join из dplyr или объединение из data.table

4) Если во втором наборе данных требуется только подмножество столбцов, выберите эти столбцы

5) Есть дополнительныеattr указывает на набор данных 'ID', который можно удалить

6) Один из столбцов mode.bus представляет собой data.frame столбец

:'data.frame': 2456 obs. of 1 variable:

Также измените этот столбец на обычный столбец

bus <- do.call(data.frame, bus)

С by arugment, merge может быть

 merge(bus,ID, all.y = TRUE, by.x = 'SAMPN.1', by.y = 'SAMPN')

Если нам нужны только select столбцы из 'шины', используйте только те

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...