我有两个命名的向量A和B.我必须计算它们之间的相关性,删除A和B都为0的条目。也就是说,如果对于某个名称'Sample1',值在A和B都是0,那么我想从相关性计算中删除那个条目。删除零后计算相关
有没有办法轻松做到这一点?我正在使用cor(A, B)
来计算相关性。
我有两个命名的向量A和B.我必须计算它们之间的相关性,删除A和B都为0的条目。也就是说,如果对于某个名称'Sample1',值在A和B都是0,那么我想从相关性计算中删除那个条目。删除零后计算相关
有没有办法轻松做到这一点?我正在使用cor(A, B)
来计算相关性。
这个怎么样?
# construct vectors
set.seed(1234)
A <- sample(0:10, 100, replace=T)
B <- sample(0:10, 100, replace=T)
# remove elements of A and B where both are 0
cor(A[A != 0 | B != 0], B[A !=0 | B != 0])
或者,更连贯对自己此刻
cor(A[!(A == 0 & B == 0)], B[!(A ==0 & B == 0)])
你只需要稍微tweek您的代码:
cor(A, B, na.rm=T)
na.rm = T告诉它删除缺失值。
如果你的数据是在一个data.frame,df
,你可以使用subset
功能:
df <- data.frame(A, B)
with(subset(df, !(A == 0 & B == 0)), cor(A,B))
这个问题已经证明真实表是多么有用...... – bouncyball
另一个选项是rowSums
,创建一个逻辑索引并执行cor
with(df[!!rowSums(df),], cor(A,B))
该OP是询问有关删除*零*值,而不是'NA'值... –