簡體   English   中英

條件平均

[英]Conditional Averaging

我這里有兩個數字列(adm_muac1和adm_muac2)。 我想創建第三列,這是兩列的平均值,但條件是兩列均不丟失(我希望數據集中缺少值),否則它不應求平均值,但要返回任何一個非缺失列作為第三列的值柱。

我寫了這段代碼

df2<-mutate(df1,
   col3=ifelse((!is.na(col1)&!is.na(col2)),(col1+col2)/2,
                              col1|col2))

這是數據集

df1<-data.frame(col1=c(12,23,NA,14,15,20),col2=c(NA,20,16,17,18,NA))
Expectedcol3
12
27.5
16
15.5
16.5
20

第一部分確實很好,但是第二部分則沒有。 我的想法是,如果col1和col2均不丟失,我想要平均值,否則不求平均,但我應該獲得col1和col2之間的任何不丟失列作為輸入col3。 任何幫助將不勝感激

謝謝

col1    col2    col3
15.6    15.5    15.55
17      17.3    17.15
11.1              1
12.4    12.4    12.4
12.3    12.2    12.25
13      13.1    13.05
10.1    10.2    10.15
10.4    10.5    10.45
11      11.1     11.05
9.1     9.3    9.2
11.6    11.9    11.75
        11.4    1
11.2    11.4    11.3
11.2    11.1    11.15
10.2    10.3    10.25
12.1    12.2    12.15
15.9    15.8    15.85
15.1    15.1    15.1
9.5     9.8     9.65
11.4    11.4    11.4
11.7    11.6    11.65
         9.3      1

您可以進行嵌套ifelse。 如果一個是NA ,請選擇另一個,否則取平均值。

df2 <- df1 %>% mutate(col3 = ifelse(is.na(col1), col2, 
                             ifelse(is.na(col2), col1, (col1+col2)/2)))

我們可以做rowMeans

df1$col3 <- rowMeans(df1[1:2], na.rm = TRUE)

暫無
暫無

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

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