[英]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.