gpt4 book ai didi

R:找出每一行中所有非零元素的方差

转载 作者:行者123 更新时间:2023-12-02 08:26:16 25 4
gpt4 key购买 nike

我有一个像这样的数据框:

ID  Value1  Value2  Value3
1 20 25 0
2 2 0 0
3 15 32 16
4 0 0 0

我想做的是仅基于非零值计算每个人 (ID) 的方差,并在不可能的情况下返回 NA。

例如,在此示例中,ID 1 的方差将为 var(20, 25),对于 ID 2,它将返回 NA,因为您不能仅计算一个条目的方差,对于 ID 3,var 将是 var(15, 32, 16),对于 ID 4,它将再次返回 NULL,因为它在都是为了计算方差。

我该怎么做?我目前有以下(不完整的)代码,但这可能不是最好的方法:

len=nrow(d)
variances = numeric(len)
for (i in 1:len){
#get all nonzero values in ith row of data into a vector nonzerodat here
currentvar = var(nonzerodat)
Variances[i]=currentvar
}

请注意,这是一个玩具示例,但我实际使用的数据集有 40 多个不同的值列来计算方差,因此可以轻松扩展的东西会很棒。

最佳答案

Data <- data.frame(ID = 1:4, Value1=c(20,2,15,0), Value2=c(25,0,32,0), Value3=c(0,0,16,0))

var_nonzero <- function(x) var(x[!x == 0])
apply(Data[, -1], 1, var_nonzero)

[1] 12.5 NA 91.0 NA

关于R:找出每一行中所有非零元素的方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31868410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com