在R中有数据框,需要通过减去列来纠正数据问题

时间:2014-01-22 23:41:23

标签: r dataframe multiple-columns

我需要一些帮助。我创建了一个看起来像这样的数据框

e<- tail(finaltable2);
e;
      Dead carried Dead1 Dead2 carried1 Dead3 Dead4 carried2 Dead5 Dead6 carried3
21215    0       0     0     0        0     0     0        0     0     0        0
21247    0       0     0     0        0     0     0        0     0     0        0
21216    0       0     0     0        0     0     0        0     0     0        0
21237    0       0     0     0        0     0     0        0     0     0        0
21218    0       0     0     0        0     0     1        1     1     1        0
21227    0       0     0     0        0     0     0        0     0     0        0

我的数据框将包含多个列(此时未完成),但将包含250行。 我的目标是计算每行死亡的数量,直到它达到16.我的问题是这样,在第21218行,我已计算死者3次。我需要做的是,任何时候发生这种情况都有一行代码可以看到并纠正这个问题。我想这可能需要几个if和else语句。任何人都可以帮我设计可行的吗?

如果有人可以提供帮助,我的输出会如下所示:

e;
      Dead carried Dead1 Dead2 carried1 Dead3 Dead4 carried2 Dead5 Dead6 carried3
21215    0       0     0     0        0     0     0        0     0     0        0
21247    0       0     0     0        0     0     0        0     0     0        0
21216    0       0     0     0        0     0     0        0     0     0        0
21237    0       0     0     0        0     0     0        0     0     0        0
21218    0       0     0     0        0     0     1        1     0     0        0
21227    0       0     0     0        0     0     0        0     0     0        0

1 个答案:

答案 0 :(得分:0)

这是我提出的一种手动方式,来自另一篇文章的一些输入。

indices <- (t$carried2 == t$Dead5) & (t$carried2 == t$Dead6)
t$Dead5[indices] <- 0
t$Dead6[indices] <- 0

indices <- (t$Dead5 == t$Dead6) & (t$carried3 ==0 )
t$Dead6[indices] <- 0

indices <- (t$carried1 == t$Dead3) & (t$carried1 == t$Dead4)
t$Dead5[indices] <- 0
t$Dead6[indices] <- 0

indices <- (t$Dead3 == t$Dead5) & (t$carried2 ==0 )
 t$Dead5[indices] <- 0

indices <- (t$carried == t$Dead1) & (t$carried == t$Dead2)
t$Dead2[indices] <- 0
t$Dead3[indices] <- 0