Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R脚本电源查询:新字符列在电源BI中读取为数字_R_Powerbi_Powerbi Desktop - Fatal编程技术网

R脚本电源查询:新字符列在电源BI中读取为数字

R脚本电源查询:新字符列在电源BI中读取为数字,r,powerbi,powerbi-desktop,R,Powerbi,Powerbi Desktop,我正在使用PowerBI创建报告,但我正在PowerQuery编辑器中的R脚本中进行数据清理,因为我无法想象如何在DAX中进行清理。出于某种原因,我创建的一个新字符列被读取为数字,类似于将因子级别读取为整数时的情况。下面是一些示例数据 +-----------+-------------------------+-----------------------------------+ | PatientId | LabTestName | LabTes

我正在使用PowerBI创建报告,但我正在PowerQuery编辑器中的R脚本中进行数据清理,因为我无法想象如何在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_读取为逻辑测试(如预期),但CoV_结果读取为文本

+-----------+------------+--------------+
| PatientId | CoV_Tested |  CoV_Result  |
+-----------+------------+--------------+
|         1 |   FALSE    | <NA>         |
|         2 |   FALSE    | <NA>         |
|         3 |    TRUE    | NOT DETECTED |
+-----------+------------+--------------+
+-----------+------------+--------------+
|PatientId | CoV | U测试| CoV | U结果|
+-----------+------------+--------------+
|1 |假||
|2 |假||
|3 |正确|未检测到|
+-----------+------------+--------------+
值“未检测到”被读取为4。我用我的大数据集和这个较小的示例重现了这一点。我也不能告诉Power BI将数据类型更改为“text”,因为它只是将4更改为“4”(即,将数字“4”更改为文本“4”)。我可能只是能够转换Power BI中的列以用实际文本替换数字,但这是一个不需要的步骤,如果有很多唯一的值,这将是一个麻烦


任何帮助都将不胜感激!谢谢

我不知道为什么它会像这样与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}})
#“添加的自定义”=Table.AddColumn(#“上一步”,
“CoV”,如果[LabTestName]为空,则每个都包含([LabTestName],“CoV”)
然后[LabTestResult]否则为空,键入文本),
#“分组行”=表.Group(#“添加自定义”,
{“PatientId”},
{{“CoV_Tested”,每个List.MatchesAny([CoV],每个u null),输入logical},
{“CoV_Result”,每个List.First(List.Select([CoV],each{null)),键入text})

我不知道为什么它会像这样与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}})
#“添加的自定义”=Table.AddColumn(#“上一步”,
“CoV”,如果[LabTestName]为空,则每个都包含([LabTestName],“CoV”)
然后[LabTestResult]否则为空,键入文本),
#“分组行”=表.Group(#“添加自定义”,
{“PatientId”},
{{“CoV_Tested”,每个List.MatchesAny([CoV],每个u null),输入logical},
{“CoV_Result”,每个List.First(List.Select([CoV],each{null)),键入text})

所以我今天第一次听说了M,除此之外我还需要进行其他转换,所以我尝试将解决方案保留在R中。将字符列转换为整数似乎是一个巨大的疏忽(将R脚本转换为无用),所以我希望其他人以前见过。是的,如果你对R更熟悉的话,这肯定不是一个通用的解决方案,也不是一个很好的解决方案,但是查询编辑器M语言非常适合于基本的转换,而不涉及复杂的建模或统计。所以我今天第一次听说M,除此之外,我还需要进行其他转换,所以我试图将解决方案保留在R中。字符列转换为整数似乎是一个巨大的疏忽(将R脚本转换为无用),所以我希望其他人以前见过。是的,如果您对R更熟悉,那么这肯定不是一个通用的解决方案,也不是一个好方法,但是查询编辑器M语言对于不涉及奇特的建模或统计的基本转换来说是非常好的。