我有一个 Dataframe ,看起来像这样
id value 1 value 2 1 2.65 7.98 1 5.89 10.84 2 1.65 2.67 2 6.89 4.89 3 5.89 6.98 3 4.23 1.98
我有3个参与者,他们被测量了两次,每次测量得到2个值,现在我想计算受试者内相关性(Pearsson R),即每个参与者/每次测量的值1和值2之间的相关性。我在苦苦挣扎如何做到这一点。
dw1jzc5e1#
使用dplyr包时,需要对ID变量执行group_by操作,然后使用cor进行关联,关联将方法作为参数。我为你的数据框做了一个更大的版本,这样结果会更合理。如果每个ID只有两行,那么相关性总是一行。
dplyr
group_by
cor
df<-data.frame(id=c(1,1,1,1,2,2,2,2,3,3,3,3), value_1=c(2.65,5.89,1.65,6.89,5.89,4.23,5.89,1.65,2.65,3.89,5.89,4.23), value_2=c(7.98,10.84,2.67,4.89,6.98,1.98,5.89,1.65,2.65,4.89,5.89,4.23))
然后group_by和cor,和pearson,斯皮尔曼,或者kendall一起:
df%>% group_by(id)%>% summarise(pearson = cor(value_1,value_2, method = "pearson"), spearman = cor(value_1,value_2, method = "spearman"))
结果如下:
# A tibble: 3 × 3 id pearson spearman <dbl> <dbl> <dbl> 1 1 0.388 0.4 2 2 0.864 0.949 3 3 0.931 0.8
1条答案
按热度按时间dw1jzc5e1#
使用
dplyr
包时,需要对ID变量执行group_by
操作,然后使用cor
进行关联,关联将方法作为参数。我为你的数据框做了一个更大的版本,这样结果会更合理。如果每个ID只有两行,那么相关性总是一行。
然后group_by和cor,和pearson,斯皮尔曼,或者kendall一起:
结果如下: