如何使用R corrplot函数从Excel绘制数据?

时间:2018-08-01 12:38:31

标签: r powerbi

我正在尝试学习R,并使用corrplot库绘制Y:CityX: Population图。我写了下面的代码:

enter image description here

当您查看上图时,有2列城市和人口。当我运行代码时,出现以下错误消息:

Error in cor(Illere_Gore_Nufus) : 'x' must be numeric.

我的Excel数据:

enter image description here

2 个答案:

答案 0 :(得分:1)

通常,只有当您有两个连续变量时,才可以绘制相关图(散点图)。相关性是一个值,它告诉您两个连续变量如何线性相关。相关值将始终介于-1和1之间,其中相关值-1表示两个变量之间的线性关系较弱,相关值1表示两个变量之间的强线性关系。相关值0表示两个变量之间没有线性关系,但是两个变量之间可能存在曲线线性关系。

例如 土地面积与土地价格 Here is the Data

该数据的相关值为0.896,这意味着土地面积和土地价格之间存在很强的线性相关。

R中的散点图如下所示 Scatter plot

R代码为

area<-c(650,785,880,990,1100,1250,1350,1800,2200,2800)
price<-c(250,275,280,290,350,340,400,335,420,460)
cor(area,price)
plot(area,price)

在Excel中,对于同一示例,您可以选择两列,请转到“插入”>“散点图”(在“图表”部分下) Scatter plot

在您的情况下,信息可以用条形图绘制,y轴表示城市,x轴表示人口,反之亦然!

希望我已经回答了您的查询!

答案 1 :(得分:1)

一些假设

您正在问如何在Excel中执行此操作,但您的问题被标记为R和Power BI(也为RStudio,但已被删除),所以我将向您展示如何使用R和Power执行此操作双。我还将向您展示为什么会收到该错误消息,以及为什么会以任何一种方式收到错误消息,因为您的数据集不足以绘制相关图。


我的答案

我假设您想对表格中城市之间的人口进行相关绘图。在该表中,每个城市需要的信息不仅仅需要一年。我将检查您的数据源,看看是否可以得出最近10年的人口数字。缺少您表中城市的确切数字,我将使用一些半伪数字来计算10个人口最多的国家/地区的人口(根据您的数据结构):

Country         2017        2016        2015        2014        2013
China           1415045928  1412626453  1414944844  1411445597  1409517397
India           1354051854  1340371473  1339431384  1343418009  1339180127
United States   326766748   324472802   325279622   324521777   324459463
Indonesia       266794980   266244787   266591965   265394107   263991379
Brazil          210867954   210335253   209297939   209860881   209288278
Pakistan        200813818   199761249   200253292   197655630   197015955
Nigeria         195875237   192568158   195757661   191728478   190886311
Bangladesh      166368149   165630262   165936711   166124290   164669751
Russia          143964709   143658415   143146914   143341653   142989754
Mexcio          137590740   137486490   136768870   137177870   136590740

在Power BI中编写和调试R代码确实很痛苦,所以我建议您安装R studio,在其中编写您的R小片段,然后将其粘贴到Power B中。

出现错误消息的原因是函数cor()仅将数值数据作为参数。在您的代码示例中,城市名称作为参数给出。在您的代码示例中还有更多潜在的陷阱。您必须确保数据集是数字的。而且,您必须确保数据集具有cor()可以接受的形状。

下面是一个R脚本,将执行此操作。复制上面的数据,并将其存储在C驱动器上名为data.xlsx的文件中。

代码

library(corrplot)
library(readxl)

# Read data
setwd("C:/")
data <- read_excel("data.xlsx")

# Set Country names as row index
rownames(data) <- data$Country

# Remove Country from dataframe
data$Country <- NULL

# Transpose data into a readable format for cor()
data <- data.frame(t(data))

# Plot data
corrplot(cor(data))

剧情

CorrPlot

Power BI

在Power BI中,需要先导入数据,然后才能在R visual中使用它们:

复制此内容:

Country,2017,2016,2015,2014,2013
China,1415045928,1412626453,1414944844,1411445597,1409517397
India,1354051854,1340371473,1339431384,1343418009,1339180127
United States,326766748,324472802,325279622,324521777,324459463
Indonesia,266794980,266244787,266591965,265394107,263991379
Brazil,210867954,210335253,209297939,209860881,209288278
Pakistan,200813818,199761249,200253292,197655630,197015955
Nigeria,195875237,192568158,195757661,191728478,190886311
Bangladesh,166368149,165630262,165936711,166124290,164669751
Russia,143964709,143658415,143146914,143341653,142989754
Mexcio,137590740,137486490,136768870,137177870,136590740

将其另存为countries.csv在您选择的文件夹中,然后使用在Power BI中将其拾取 获取数据| Text / CSV ,在对话框中单击 Edit ,然后在 Power Query Editor 中,单击将第一行用作标题,您在 Power Query Editor 中拥有此表:

enter image description here

单击关闭并应用,并确保您已在 VISUALIZATIONS |下找到可用数据。字段

enter image description here

在可视化下单击R:

enter image description here

选择 FIELDS |下的所有列|国家,以便您进行以下设置:

enter image description here

获取我们上面准备的R代码段的部分

library(corrplot)

# Set Country names as row index
data <- dataset

rownames(data) <- data$Country

# Remove Country from dataframe
data$Country <- NULL

# Transpose data into a readable format for cor()
data <- data.frame(t(data))

# Plot data
corrplot(cor(data))

并将其粘贴到Power BI R脚本编辑器

enter image description here

点击运行R脚本

enter image description here

您将得到这个:

enter image description here

就是这样!

如果将过程更改为从Excel文件而不是文本文件导入数据(使用 Get Data | Excel ),则说明您已成功组合Excel,Power BI和R的功能来生成散点图!

我希望这就是您想要的!