条件平均

时间:2017-11-19 18:33:32

标签: r dplyr

我这里有两个数字列(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

2 个答案:

答案 0 :(得分:1)

你可以做一个嵌套的ifelse。如果一个是df2 <- df1 %>% mutate(col3 = ifelse(is.na(col1), col2, ifelse(is.na(col2), col1, (col1+col2)/2))) ,请选择另一个,否则将其平均。

{{1}}

答案 1 :(得分:0)

我们可以做一个rowMeans

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