r函数,以查找是否满足条件,然后添加具有累积差异的列

r函数,以查找是否满足条件,然后添加具有累积差异的列,r,R,我有一个数据帧 df<-data.frame(H0=c(35.4, NA, 36.0, 36.4), H1=c(32.3, 32.0, 34.3, 33.5), H2=c(33.4, 31.5, 33, 34.2), H3=c(32.9, 33.0, 34.0, 33.0), H4=c(32.8, NA, 34.5, 33.2)) df32.5,存储差异,并添加第五列,该行中所有列的累积差异>32.5。NA被忽略了。所以我希望第一行的结果是4.5。也许吧 d

我有一个数据帧

df<-data.frame(H0=c(35.4, NA, 36.0, 36.4), H1=c(32.3, 32.0, 34.3, 33.5), 
       H2=c(33.4, 31.5, 33, 34.2), H3=c(32.9, 33.0, 34.0, 33.0),
       H4=c(32.8, NA, 34.5, 33.2))
df32.5,存储差异,并添加第五列,该行中所有列的累积差异>32.5。NA被忽略了。所以我希望第一行的结果是4.5。

也许吧

df$diff_32.5 <- apply(df, 1, function(x){sum(x[x>32.5]-32.5, na.rm=T)})

> df
    # H0   H1   H2   H3   H4 diff_32.5
# 1 35.4 32.3 33.4 32.9 32.8       4.5
# 2   NA 32.0 31.5 33.0   NA       0.5
# 3 36.0 34.3 33.0 34.0 34.5       9.3
# 4 36.4 33.5 34.2 33.0 33.2       7.8
df$diff_32.5 32.5]-32.5,na.rm=T)
>df
#H0 H1 H2 H3 H4差异32.5
# 1 35.4 32.3 33.4 32.9 32.8       4.5
#2 NA 32.0 31.5 33.0 NA 0.5
# 3 36.0 34.3 33.0 34.0 34.5       9.3
# 4 36.4 33.5 34.2 33.0 33.2       7.8
另一个包含更多步骤的选项:

df2
df2 <- df-32.5
df2[df2<0] <- 0
df$diff_32.5 <- rowSums(df2, na.rm=TRUE)