簡體   English   中英

使用Apply函數對R中的多組變量進行子集,匹配和關聯

[英]Using an apply function to subset, match, and correlate multiple sets of variables in R

我想使用一個apply函數來緊湊地將變量集與以下字符串進行子集,匹配和關聯:“ hpi”,“ cpi”,“ eh”。

具體來說,我想將以下第三個注釋(僅適用於“ hip”)下面的所有行應用於其他每個字符串。

你能給些建議么?

MWE:

#Dataset 1
alias <- paste("v", seq( from = 1, to = 25 ), sep="" )
df1 = data.frame(replicate(25,sample(0:100,1000,rep=TRUE)))
colnames(df1) = alias

#Dataset 2
df2 = data.frame(replicate(3,sample(0:1,25,rep=TRUE)))
colnames(df2) = c("hpi","cpi","eh")
df2$alias = alias
df2$name = rep ( c("hpi housig", "cpi inflation", "eh econhealth", "unem unemployment", "inc personal income"), 5)

#I would like to use an apply function to do this to each of "hpi", "cpi", "eh"
df2$hpi = grepl("hpi", df2$name)
hpisub = df2[df2$hpi == 1, ]
hpisubvar = hpisub$alias
hpidf = df1[, hpisubvar]
corrhpi = cor(hpidf)

*apply函數將函數FUN應用於其第一個參數,因此您需要編寫一個要應用的函數。

fun <- function(x){
    dfsub = df2[grepl(x, df2$name), ]
    cor(df1[, dfsub$alias])
}

現在,我們對您的結果進行測試, corrhpi

identical(corrhpi, fun("hpi"))
[1] TRUE

最后,將其應用於所需的向量。

vec <- c("hpi", "cpi", "eh")
result <- lapply(vec, fun)
names(result) <- vec

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM