我正在尝试学习R,并使用corrplot库绘制Y:City
和X: Population
图。我写了下面的代码:
当您查看上图时,有2列城市和人口。当我运行代码时,出现以下错误消息:
Error in cor(Illere_Gore_Nufus) : 'x' must be numeric.
我的Excel数据:
答案 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))
剧情
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 中拥有此表:
单击关闭并应用,并确保您已在 VISUALIZATIONS |下找到可用数据。字段:
在可视化下单击R:
选择 FIELDS |下的所有列|国家,以便您进行以下设置:
获取我们上面准备的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脚本编辑器:
点击运行R脚本:
您将得到这个:
就是这样!
如果将过程更改为从Excel文件而不是文本文件导入数据(使用 Get Data | Excel ),则说明您已成功组合Excel,Power BI和R的功能来生成散点图!
我希望这就是您想要的!