全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3610 9
2018-05-25
请教各位大虾,假如我的数据是这样的:
data <- data.frame(y = rnorm(30), x = rnorm(30), grp = sample(c("east", "center", "west"), 30, replace = T))

在grp的每个水平下,分析x和y的相关性,应该怎么写程序呢?

cor.test(x,y,data=data[grp=="east",])
cor.test(x,y,data=data[grp=="center",])
cor.test(x,y,data=data[grp=="west",])

这样好像不行,因为cor.test命令好像不能指定data的名字

如果先生成subset,然后再做cor.test倒是可以,不过这样就要逐一的去生成subset,当分组变量有很多个,比如grp1,grp2,grp3.。。的时候,这种方法就不太可靠了

请问有好的方法吗?

比如f<-function(){
?????
}
进一步的,如果计算得出了结果,怎么分别保存对应的相关系数和p值



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-5-28 08:03:21
library(tidyverse)
group_by() + nest() + map()
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-5-28 09:23:23
非常感谢你的回答,这个回答对我来说太深奥了,没法解决我的问题
首先,library(tidyverse)
Error in library(tidyverse) : 不存在叫‘tidyverse’这个名字的程辑包

其次,group_by(data, grp) %>% 是这样写吗,后面写什么呢,写cor.test不行。

再次,nest()与group_by()用+连接起来,表示要写在一起,还是你随意些的+呢,nest()也没有查到
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-5-28 09:35:33
我试了一下
group <- group_by(data, grp)
cor.test(group$x,group$y,data=group)
还是不行
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-5-28 10:37:44
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-5-28 10:38:31
高手能不能把你的程序贴出来呢,好让我膜拜一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群