为什么 r 不像 spss 那样对 0 和 1 中的因子进行编码来计算 $r$ 系数?

Why r don't code factors in 0 and 1 like spss to calculate $r$ coefficient?

在SPSS中你可以输入数据0和1,然后指出数据是名义上的。然后你可以计算任何你想要的,比如 Pearson 或 Spearman 相关性。但是在 R 中,当您输入数据时,您必须指定该数据是一个因子,即使它是数字,您也必须指定它是一个因子,然后它将被视为一个字符串。现在当我使用 cor() 时,我不工作,因为它需要数字输入。

你是如何克服这个问题的?

例子如下:

data(Titanic)
Titanic <- data.frame(Titanic) 
cor(Titanic$Sex, Titanic$Freq)

你是如何克服这个问题的?

两种方式:

  1. 将数据提供给 cor() 函数希望您如何:
data(Titanic)
Titanic <- data.frame(Titanic) 
cor(Titanic$Sex, Titanic$Freq) # Bad, Titanic$Sex is a factor, not numeric
# Error in cor(Titanic$Sex, Titanic$Freq) : 'x' must be numeric
cor(as.numeric(Titanic$Sex), Titanic$Freq) # Good, cor() expects numeric
# [1] -0.294397

如果您不想输入 as.numeric,您可以使用 c():

cor(c(Titanic$Sex), Titanic$Freq)
# [1] -0.294397
  1. 如果您不想一直这样做,您可以自己制作 cor() 来为您完成:
cor <- function(x, y, ...) {
    if ( !is.numeric(x) ) {
        message("Converting x to numeric.")
        x <- as.numeric(x)
    }
    if ( !is.numeric(y) ) {
        message("Converting y to numeric.")
        y <- as.numeric(y)
    }
    return(stats::cor(x, y, ...))
}

data(Titanic)
Titanic <- data.frame(Titanic) 
cor(Titanic$Sex, Titanic$Freq)

# Converting x to numeric.
# [1] -0.294397

为什么 R 不能做像 SPSS 这样的事情?

  1. 这是不同的软件。一段时间以来,您可能已经建立了使用某个特定软件的某些假设或期望,但您应该失去对其他软件将或应该以相同方式工作的期望。
  2. R的方式可能更合适。您可以在 PoGibas's comment, and on Cross Validated on here.
  3. 中看到一些讨论