R-分别使用每个变量的总和或所有变量总和的差

问题描述 投票:0回答:1

我发疯了,因为我正在使用sum()函数,它显示的结果毫无意义。我有4个数值变量:A,B,M,N。我还有一个权重变量:W。

如果我进行加权和:

sum(df$W * (df$A), na.rm = T) = AR
sum(df$W * df$A, na.rm = T) = AR

结果相同。

如果我加B:

sum(df$W * (df$A + df$B), na.rm = T) = ABR
sum(df$W * df$A, df$W * df$B, na.rm = T) = ABR

结果相同。

如果添加M:

sum(df$W * (df$A + df$B + df$M), na.rm = T) = ABMR1
sum(df$W * df$A, df$W * df$B, df$W * df$M, na.rm = T) = ABMR2

结果变得不同。

如果我加N:

sum(df$W * (df$A + df$B + df$M + df$N), na.rm = T) = ABMNR1
sum(df$W * df$A, df$W * df$B, df$W * df$M, df$W * df$N, na.rm = T) = ABMNR2

结果不同。

所以似乎M和/或N变量有问题。但是,如果我开始添加M和N变量...:

sum(df$W * (df$M), na.rm = T) = MR
sum(df$W * df$M, na.rm = T) = MR

结果相同。

如果我加N:

sum(df$W * (df$M + df$N), na.rm = T) = MNR
sum(df$W * df$M, df$W * df$N, na.rm = T) = MNR

结果相同。

现在,如果我添加A:

sum(df$W * (df$M + df$N + df$A), na.rm = T) = MNA1
sum(df$W * df$M, df$W * df$N, df$W * df$A, na.rm = T) = MNA2

结果变得不同。

如果我加B:

sum(df$W * (df$M + df$N + df$A + df$B), na.rm = T) = MNAB1
sum(df$W * df$M, df$W * df$N, df$W * df$A, df$W * df$B, na.rm = T) = MNAB2

结果不同。

现在看来问题出在A或B变量上。这怎么可能?如果我将W变量与变量的总和相乘(第一种方法),或者我将不同的变量相加(第二种方法),有什么区别吗?

非常感谢您提供的任何帮助!

r sum weighted
1个回答
0
投票

考虑这个最小的例子:

df<-data.frame(W=c(1,2),A=c(NA,3),B=c(4,NA))

让我们来检查:

sum(df$W*df$A,na.rm=TRUE)
#[1] 6
sum(df$W*df$B,na.rm=TRUE)
#[1] 4
sum(df$W*df$B,df$W*df$A,na.rm=TRUE)
#[1] 10
sum(df$W*(df$B+df$A),na.rm=TRUE)
#[1] 0

您应该弄清楚发生了什么。提示:

df$W*(df$B+df$A)
#[1] NA NA
© www.soinside.com 2019 - 2024. All rights reserved.