R-скрипт Power Query: новый символьный столбец читается как числа в Power BI - PullRequest
0 голосов
/ 06 апреля 2020

Я использую Power BI для создания отчета, но я делаю очистку данных в R-скрипте в Power Query Editor, потому что я не мог понять, как это сделать в DAX. По какой-то причине новый столбец символов, который я создал, читается как числа, подобно тому, что произойдет, если вы прочитаете факторные уровни как целые числа. Вот некоторые примеры данных.

+-----------+-------------------------+-----------------------------------+
| PatientId |       LabTestName       |           LabTestResult           |
+-----------+-------------------------+-----------------------------------+
|         1 | Veritor Rapid Influenza | NEGATIVE TYPE A / NEGATIVE TYPE B |
|         1 | Veritor Rapid Strep     | Cancelled                         |
|         1 | NA                      | NA                                |
|         2 | NA                      | NA                                |
|         3 | Veritor Rapid Strep     | Negative                          |
|         3 | SARS CoV 2 RNA, RT PCR  | NOT DETECTED                      |
+-----------+-------------------------+-----------------------------------+

Некоторые примеры кода:

x %>%
  group_by(PatientId) %>%
  mutate(
    CoV_Tested = any(!is.na(LabTestName) & str_detect(LabTestName, "CoV")),
    CoV_Result = ifelse(
      CoV_Tested, unique(LabTestResult[!is.na(LabTestName) & str_detect(LabTestName, "CoV")]), NA
    )
  ) %>%
  distinct(PatientId, CoV_Tested, CoV_Result)

В приведенной ниже таблице Power BI читает CoV_Tested как логический, как и ожидалось, но CoV_Result читается как текст.

+-----------+------------+--------------+
| PatientId | CoV_Tested |  CoV_Result  |
+-----------+------------+--------------+
|         1 |   FALSE    | <NA>         |
|         2 |   FALSE    | <NA>         |
|         3 |    TRUE    | NOT DETECTED |
+-----------+------------+--------------+

Значение «НЕ ОБНАРУЖЕНО» читается как 4. Я воспроизвел это с моим большим набором данных и этим меньшим примером один. Я также не могу просто сказать Power BI изменить тип данных на «текст», потому что он просто меняет 4 на «4» (ie, меняет цифру c «4» на текст «4»). Я мог бы просто преобразовать столбец в Power BI, чтобы заменить числа фактическим текстом, но этот шаг не требуется, и это будет хлопотно, если будет много уникальных значений.

Любая помощь будет оценена! Спасибо!

1 Ответ

2 голосов
/ 06 апреля 2020

Я не уверен, почему он так взаимодействует с R, но это не так сложно сделать просто в M с помощью пользовательского столбца.

#"Added Custom" = Table.AddColumn(#"Previous Step",
    "CoV", each if [LabTestName] <> null and Text.Contains([LabTestName], "CoV")
                then [LabTestResult] else null, type text),
#"Grouped Rows" = Table.Group(#"Added Custom",
    {"PatientId"},
    {{"CoV_Tested", each List.MatchesAny([CoV], each _ <> null), type logical},
     {"CoV_Result", each List.First(List.Select([CoV], each _ <> null)), type text}})
...