我发疯了,因为我正在使用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变量与变量的总和相乘(第一种方法),或者我将不同的变量相加(第二种方法),有什么区别吗?
非常感谢您提供的任何帮助!
考虑这个最小的例子:
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