Использование справочной таблицы выдает ошибку: предоставлено x элементов, которые будут назначены y элементам столбца 'z' - PullRequest
0 голосов
/ 06 июня 2019

Я использую справочную таблицу с именем mapdf, которая в основном содержит столбец с именем "old" (содержащий коды RX) и столбец с именем "new" (содержащий коды CUI).Прямо сейчас у меня есть фрейм данных с именем datarx с именами дженериков в одном столбце, а все остальные столбцы - это коды RX, относящиеся к этому названию дженериков.

В итоге я хочу получить кадр данных с общими именами медработников и соответствующими им кодами CUI (не RX).

Использование Замена значений в кадре данных на основе поискатаблица , я попробовал предложения.В частности, строка CUI2GEN[ ,2:50] <- mapdf$new[match(unlist(datarx), mapdf$old)] дает мне ошибку:

    Error in `[<-.data.table`(`*tmp*`, , 2:51, value = c(NA, NA, 63L, 64L,          
    : 
      Supplied 543132 items to be assigned to 1269 items of column 
    'V2_001'. The RHS length must either be 1 (single values are ok) or 
    match the LHS length exactly. If you wish to 'recycle' the RHS please 
    use rep() explicitly to make this intent clear to readers of your 
    code.

И использование lapply для циклического перебора столбцов и сопоставления значений с таблицей поиска (как было упомянуто в предыдущем посте, на который я ссылался) занимает слишком много времени.долго со всеми данными у меня есть.Вот некоторый код для справки:

> head(mapdf)
      old      new
1 3091081 C0000039
2 1926948 C0000039
3 3091092 C0000039
4 1926948 C0000039
5 3091093 C0000039
6 1926948 C0000039

> head(datarx)
   V1 V2_001 V2_002 V2_003 V2_004 V2_005 V2_006 V2_007 V2_008 ... V2_049
1: azithromycin 141963 105260 212446 749782 727450 308460 359230 749783
2: acetaminophen_hydrocodone_bitartrate 857118 857087 856903 857005 833036 857004 857107 856999
    ...etc

> CUI2GEN <- datarx

> CUI2GEN[ ,2:50] <- mapdf$new[match(unlist(datarx), mapdf$old)]

Error in `[<-.data.table`(`*tmp*`, , 2:50, value = c(NA, NA, 63L, 64L,  : 
  Supplied 543132 items to be assigned to 1269 items of column 'V2_001'. The RHS length must either be 1 (single values are ok) or match the LHS length exactly. If you wish to 'recycle' the RHS please use rep() explicitly to make this intent clear to readers of your code.

Надеюсь, это легко исправить, потому что я чувствую, что что-то упустил!

...