The error message explains that the cor() function requires the x argument to be numeric. Your gender column has character values. You could recode that data so that Female = 1 and Male = 2 but I do not think the correlation value would be very useful. What are you trying to accomplish?

i want to see whether there is a correlation between make and female when it comes to cognitive competence i also want to run a t.test but not sure whether to run paired or unpaired t test. And how do i make Female = 1 and Male = 2?

```
x <- c("a", "a", "a", "a", "b", "b")
y <- c(1, 1, 1, 1, 2, 2)
cor(as.numeric(as.factor(x)), y)
```

thank u i copied your code and ran the cor it still gives me the same error

that's weird, can you show me your code please?

x <- c("Female", "Female", "Female", "Female", "Male", "Male")

y <- c(1, 1, 1, 1, 2, 2)

cor(as.numeric(as.factor(x)), y)

here is the output:

[1] 1

glad that it works now!

that particular code runs but the cor command is still giving the same error, saying that x must be numeric

Did you convert your `character`

object into a `factor`

and then into `numeric`

?

yes using this : df9$gender <- as.factor(df9$gender)

df9$Cognitive <- as.factor(df9$Cognitive)

Cognitive is already `numeric`

, indicated by the tsibble with `dbl`

. Then you need to convert the `factor`

object into `numeric`

with `as.numeric(as.factor(x))`

.

Its somewhat counterproductive to make Cognitive a factor. Factors are there to compute on character strings 'as though' they are integer representations. When you already have numbers just use them directly for computation.

Will this work? I get .16. I suspect correlation is not the right tool though. Logistic regression?

datafile0 <- data.frame(gender=c("Female", "Male", "Female","Female","Female", "Male"),

```
cognitive=c(4.56, 6, 5.43, 2.88, 3.55, 3))
```

datafile0$gender <- ifelse(datafile0$gender == "Female", 0, 1)

cor(datafile0$gender, datafile0$cognitive)

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.