按类别对列表进行的相关性测试
Correlation test by category over a list
(抱歉我不能 post 图片,因为我没有名气)
我有一个包含 21 个数据帧的列表,我希望按分类组对它们执行相关性测试。类别在变量 Station
下并且对于 21 个数据帧是相同的。
请查看下面单个数据框的小片段
This is a small snippet of a single dataframe
下面是对单个数据帧进行相关性测试的代码,下面是输出
func <- function(b21)
{
return(data.frame(COR = cor(b21$Origin, b21$Rainfall)))
}
a <- ddply(b21, .(Station), func)
Output of above code
我现在希望在整个列表中这样做
func <- function(top30clean)
{
return(data.frame(COR = cor(x$Origin, x$Rainfall)))
}
a <- ddply(top30clean, .(Station), func)
当我尝试 运行 时出现以下错误
Error in if (empty(.data)) return(.data) :
missing value where TRUE/FALSE needed
我必须 lapply 吗?
干杯传奇
只需使用 lapply
和 lambda 函数遍历 list
,使用相同的代码
library(plyr)
func <- function(data) {
return(data.frame(COR = cor(data$Origin, data$Rainfall)))
}
out <- lapply(top30clean, function(dat) ddply(dat, .(Station), func))
-输出
out[[1]]
Station COR
1 b1 -0.22839583
2 b10 -0.34085326
3 b2 0.55192520
4 b3 -0.19323719
5 b4 -0.87735044
6 b5 0.50342343
7 b6 -0.38747112
8 b7 0.13616484
9 b8 -0.30886631
10 b9 0.04089663
out[[3]]
Station COR
1 b1 -0.11467295
2 b10 0.38343956
3 b2 0.86669396
4 b3 -0.71142786
5 b4 0.50981405
6 b5 -0.15545226
7 b6 -0.03622854
8 b7 -0.51338336
9 b8 0.16221257
10 b9 0.58353028
数据
set.seed(24)
top30clean <- replicate(5, data.frame(Station = rep(paste0("b", 1:10), each = 5),
Rainfall = sample(0:100, 50, replace = TRUE),
Origin = sample(75:100, 50, replace = TRUE)), simplify = FALSE)
(抱歉我不能 post 图片,因为我没有名气)
我有一个包含 21 个数据帧的列表,我希望按分类组对它们执行相关性测试。类别在变量 Station
下并且对于 21 个数据帧是相同的。
请查看下面单个数据框的小片段
This is a small snippet of a single dataframe
下面是对单个数据帧进行相关性测试的代码,下面是输出
func <- function(b21)
{
return(data.frame(COR = cor(b21$Origin, b21$Rainfall)))
}
a <- ddply(b21, .(Station), func)
Output of above code
我现在希望在整个列表中这样做
func <- function(top30clean)
{
return(data.frame(COR = cor(x$Origin, x$Rainfall)))
}
a <- ddply(top30clean, .(Station), func)
当我尝试 运行 时出现以下错误
Error in if (empty(.data)) return(.data) :
missing value where TRUE/FALSE needed
我必须 lapply 吗? 干杯传奇
只需使用 lapply
和 lambda 函数遍历 list
,使用相同的代码
library(plyr)
func <- function(data) {
return(data.frame(COR = cor(data$Origin, data$Rainfall)))
}
out <- lapply(top30clean, function(dat) ddply(dat, .(Station), func))
-输出
out[[1]]
Station COR
1 b1 -0.22839583
2 b10 -0.34085326
3 b2 0.55192520
4 b3 -0.19323719
5 b4 -0.87735044
6 b5 0.50342343
7 b6 -0.38747112
8 b7 0.13616484
9 b8 -0.30886631
10 b9 0.04089663
out[[3]]
Station COR
1 b1 -0.11467295
2 b10 0.38343956
3 b2 0.86669396
4 b3 -0.71142786
5 b4 0.50981405
6 b5 -0.15545226
7 b6 -0.03622854
8 b7 -0.51338336
9 b8 0.16221257
10 b9 0.58353028
数据
set.seed(24)
top30clean <- replicate(5, data.frame(Station = rep(paste0("b", 1:10), each = 5),
Rainfall = sample(0:100, 50, replace = TRUE),
Origin = sample(75:100, 50, replace = TRUE)), simplify = FALSE)