在进行关联时无法强制执行表

问题描述 投票:0回答:1

我有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),结果仍然是“列表”。

任何建议都将受到高度赞赏!

r correlation
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.