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