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

时间:2015-04-28 14:07:20

标签: 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))

我需要一个能够查看每一行的函数,如果数字是&gt; 32.5,则存储差异,并添加第五列,其中该行中所有列的累积差异&gt; 32.5。 NA被忽略。所以我希望第一行得到4.5的结果。

1 个答案:

答案 0 :(得分:3)

也许

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

包含更多步骤的另一个选项:

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