进行关联时无法强制转换为表格

时间:2018-09-06 02:40:47

标签: r correlation

我有33行列表数据, 如下:

enter link description here

我正在使用以下代码创建相关系数:

    mpg.df <- as.data.frame(mpg)

cor(mpg, method = "pearson", use = "complete.obs")

但是,我遇到了同样的错误:

  

cor(mpg,method =“ pearson”,use =“ complete.obs”)错误:     'x'必须是数字

然后我使用typeof(mpg.df),结果仍然是“列表”。

任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

您的示例数据框可能包含一列或多列非数字列。由于您的示例数据帧看起来像R中的预定义mtcars数据帧的子集,因此我将按照以下步骤在R中创建此子集。

# Select some columns
mtcars2 <- mtcars[, c("mpg", "cyl", "disp", "hp", "drat", "wt")]

# View the first six rows 
head(mtcars2)
#                    mpg cyl disp  hp drat    wt
# Mazda RX4         21.0   6  160 110 3.90 2.620
# Mazda RX4 Wag     21.0   6  160 110 3.90 2.875
# Datsun 710        22.8   4  108  93 3.85 2.320
# Hornet 4 Drive    21.4   6  258 110 3.08 3.215
# Hornet Sportabout 18.7   8  360 175 3.15 3.440
# Valiant           18.1   6  225 105 2.76 3.460

现在看一下mtcars2的结构,您会看到所有列都是数字。

# Show the class of each column
str(mtcars2)
# 'data.frame': 32 obs. of  6 variables:
#   $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
# $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
# $ disp: num  160 160 108 258 360 ...
# $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
# $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
# $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...

由于所有列都是数字,因此我们可以使用cor函数进行相关分析。

# Do correlation analysis
cor(mtcars2)
#             mpg        cyl       disp         hp       drat         wt
# mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.6811719 -0.8676594
# cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.6999381  0.7824958
# disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.7102139  0.8879799
# hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.4487591  0.6587479
# drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.0000000 -0.7124406
# wt   -0.8676594  0.7824958  0.8879799  0.6587479 -0.7124406  1.0000000