我需要一些帮助。我创建了一个看起来像这样的数据框
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
答案 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