为什么 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)
你是如何克服这个问题的?
两种方式:
- 将数据提供给
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
- 如果您不想一直这样做,您可以自己制作
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 这样的事情?
在SPSS中你可以输入数据0和1,然后指出数据是名义上的。然后你可以计算任何你想要的,比如 Pearson 或 Spearman 相关性。但是在 R 中,当您输入数据时,您必须指定该数据是一个因子,即使它是数字,您也必须指定它是一个因子,然后它将被视为一个字符串。现在当我使用 cor() 时,我不工作,因为它需要数字输入。
你是如何克服这个问题的?
例子如下:
data(Titanic)
Titanic <- data.frame(Titanic)
cor(Titanic$Sex, Titanic$Freq)
你是如何克服这个问题的?
两种方式:
- 将数据提供给
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
- 如果您不想一直这样做,您可以自己制作
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