我试图根据因子水平确定变量(浓度,见下文)不同子集之间的相关性--在本例中,湖=(A,B,C)--换句话说,测试A处浓度测量值与B处浓度测量值之间的相关性,然后测试B处浓度测量值与C处浓度测量值之间的相关性,以及A处浓度测量值与C处浓度测量值之间的相关性。
问题是基于因子的子集长度不同,但我只想在相关性中包含日期精确匹配的观测。我尝试在cor. test函数中使用='complete. obs ',希望这样做可以达到目的,但没有成功。
res <- cor.test(Data$Concentration[Data$Lake=="A"],
Data$Concentration[Data$Lake=="B"],
use='complete.obs',
method = "pearson")
但我得到了
Error in cor.test.default(Data$Concentration[Data$Lake=="A"], :
'x' and 'y' must have the same length
尝试搜索,但找不到解决方案。这是什么,可能可以解决与融化/重塑或也许有一个更简单的解决方案,我没有看到。谢谢。
数据如下...
structure(list(Lake = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("A", "B",
"C"), class = "factor"), Date = structure(c(2L, 3L, 4L, 5L, 7L,
8L, 9L, 1L, 3L, 4L, 6L, 7L, 2L, 3L, 4L, 6L, 7L), .Label = c("1970-04-06",
"1970-04-07", "1970-04-28", "1970-05-04", "1970-05-14", "1970-05-15",
"1970-05-28", "1970-05-29", "1970-05-30"), class = "factor"),
Concentration = c(10L, 20L, 30L, 40L, 50L, 50L, 50L, 100L,
200L, 280L, 410L, 500L, 1L, 3L, 8L, 90L, 1200L)), .Names = c("Lake",
"Date", "Concentration"), class = "data.frame", row.names = c(NA,
-17L))
2条答案
按热度按时间falq053o1#
如果您只需要相关性,您可以执行以下操作:
如果你需要相关性和p值,比如使用cor.test,那么就需要更多的编码:
nukf8bse2#
使用
dplyr
/tidyr
:给你
现在,通过以下方式获得所需的相关性