简体   繁体   中英

x must be numeric corrolation

I have two datasets for the same participants' responses but at two different times. I want to examine the stability reliability by doing a test-retest using Spearman correlation

> colA
# A tibble: 7 x 42
    Va1   Va2   Va3   Va4   Va5   Va6 `V1-1`   Vb1   Vb2   Vb3 `V2-2`   Vc1   Vc2   Vc3   Vc4
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
1     5     5     7     7     7     7   6.33     7     7     7   7        6     6     8     7
2     8     8     8     7     7     7   7.5      4     4     7   5        7     7     7     4
3    10     9     8     9     8    10   9        4     4     5   4.33    10     4     8     8
4     7     7     7     7     6     6   6.67     3     3     7   4.33     6     6     6     6
5     7     7     7     6    10     5   7        4     4     4   4        9     9     8     8
6     8     8     7     8     7     7   7.5      3     3     7   4.33     8     9     9    10
7    10    10     9     9    10     9   9.5      5     5     7   5.67     7     9     8     8
# ... with 27 more variables: V3-3 <dbl>, Vd1 <dbl>, Vd2 <dbl>, Vd3 <dbl>, Vd4 <dbl>,
#   V4-4 <dbl>, Ve1 <dbl>, Ve2 <dbl>, Ve3 <dbl>, Ve4 <dbl>, Ve5 <dbl>, Ve6 <dbl>, V5-5 <dbl>,
#   Vf1 <dbl>, Vf2 <dbl>, Vf3 <dbl>, Vf4 <dbl>, Vf5 <dbl>, V6-6 <dbl>, Vg1 <dbl>, Vg2 <dbl>,
#   Vg3 <dbl>, Vg4 <dbl>, Vg5 <dbl>, Vg6 <dbl>, V7-7 <dbl>, Vtotal <dbl>

This is for the first data set, the second was:

> colB
# A tibble: 7 x 42
   Vaa1  Vaa2  Vaa3  Vaa4  Vaa5  Vaa6 `Vv1-1`  Vbb1  Vbb2  Vbb3 `Vv2-2`  Vcc1  Vcc2  Vcc3  Vcc4
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl> <dbl> <dbl> <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>
1     5     5     7     7     7     6    6.17     7     7     6    6.67     6     6     7     7
2     8     8     8     8     8     7    7.83     4     4     6    4.67     7     7     7     6
3     9     9     9     9     9     9    9        4     4     5    4.33     9     4     8     8
4     7     7     7     7     7     6    6.83     3     3     7    4.33     6     6     6     6
5     7     7     7     7     9     5    7        4     4     4    4        8     8     8     8
6     7     7     8     8     7     7    7.33     3     3     6    4        9     9     9    10
7     9     9     9     9    10     8    9        4     4     7    5        7     9     7     7
# ... with 27 more variables: Vv3-3 <dbl>, Vdd1 <dbl>, Vdd2 <dbl>, Vdd3 <dbl>, Vdd4 <dbl>,
#   Vv4-4 <dbl>, Vee1 <dbl>, Vee2 <dbl>, Vee3 <dbl>, Vee4 <dbl>, Vee5 <dbl>, Vee6 <dbl>,
#   Vv5-5 <dbl>, Vff1 <dbl>, Vff2 <dbl>, Vff3 <dbl>, Vff4 <dbl>, Vff5 <dbl>, Vv6-6 <dbl>,
#   Vgg1 <dbl>, Vgg2 <dbl>, Vgg3 <dbl>, Vgg4 <dbl>, Vgg5 <dbl>, Vgg6 <dbl>, Vv7-7 <dbl>,
#   Vvtotal <dbl>

when I run the correlation it returned the following error:

> cor.test(colA,colB, method = "spearman")
Error in cor.test.default(colA, colB, method = "spearman") : 
  'x' must be a numeric vector

Though all variables are numeric including the first column

str(colA)
tibble [7 x 42] (S3: tbl_df/tbl/data.frame)
 $ Va1   : num [1:7] 5 8 10 7 7 8 10
 $ Va2   : num [1:7] 5 8 9 7 7 8 10
 $ Va3   : num [1:7] 7 8 8 7 7 7 9
 $ Va4   : num [1:7] 7 7 9 7 6 8 9
 $ Va5   : num [1:7] 7 7 8 6 10 7 10
 $ Va6   : num [1:7] 7 7 10 6 5 7 9
 $ V1-1  : num [1:7] 6.33 7.5 9 6.67 7 ...
 $ Vb1   : num [1:7] 7 4 4 3 4 3 5
 $ Vb2   : num [1:7] 7 4 4 3 4 3 5
 $ Vb3   : num [1:7] 7 7 5 7 4 7 7
 $ V2-2  : num [1:7] 7 5 4.33 4.33 4 ...
 $ Vc1   : num [1:7] 6 7 10 6 9 8 7
 $ Vc2   : num [1:7] 6 7 4 6 9 9 9
 $ Vc3   : num [1:7] 8 7 8 6 8 9 8
 $ Vc4   : num [1:7] 7 4 8 6 8 10 8
 $ V3-3  : num [1:7] 6.75 6.25 7.5 6 8.5 9 8
 $ Vd1   : num [1:7] 6 7 8 5 7 8 7
 $ Vd2   : num [1:7] 9 3 6 5 7 10 9
 $ Vd3   : num [1:7] 8 3 8 5 8 11 9
 $ Vd4   : num [1:7] 6 4 7 7 7 9 8
 $ V4-4  : num [1:7] 7.25 4.25 7.25 5.5 7.25 9.5 8.25
 $ Ve1   : num [1:7] 7 4 11 7 9 8 8
 $ Ve2   : num [1:7] 8 3 9 5 6 8 9
 $ Ve3   : num [1:7] 7 10 7 5 7 9 9
 $ Ve4   : num [1:7] 6 4 7 5 7 8 9
 $ Ve5   : num [1:7] 8 10 3 2 7 7 10
 $ Ve6   : num [1:7] 3 10 10 2 8 9 8
 $ V5-5  : num [1:7] 6.5 6.83 7.83 4.33 7.33 ...
 $ Vf1   : num [1:7] 3 7 8 7 7 7 8
 $ Vf2   : num [1:7] 7 7 7 5 8 9 8
 $ Vf3   : num [1:7] 4 1 5 5 7 8 7
 $ Vf4   : num [1:7] 4 1 7 5 7 8 8
 $ Vf5   : num [1:7] 7 10 7 5 8 7 9
 $ V6-6  : num [1:7] 5 5.2 6.8 5.4 7.4 7.8 8
 $ Vg1   : num [1:7] 9 7 6 7 7 8 9
 $ Vg2   : num [1:7] 8 10 5 6 7 8 9
 $ Vg3   : num [1:7] 7 3 5 5 8 10 10
 $ Vg4   : num [1:7] 10 7 4 5 7 8 8
 $ Vg5   : num [1:7] 8 7 7 5 8 9 8
 $ Vg6   : num [1:7] 7 7 10 5 7 8 9
 $ V7-7  : num [1:7] 8.17 6.83 6.17 5.5 7.33 ...
 $ Vtotal: num [1:7] 6.71 5.98 6.98 5.39 6.97 ..

and it is the same for colB

This should work: As far as I know: cor.test needs a vector as input:

# for the whole dataframe use cor
cor(colA, colB)

# vector with cor.test
colA <- colA[,1]
colB <- colB[,1]
cor.test(colA, colB,  method = "spearman")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM