R 如果满足条件,如何从提交行中获取值?
我在谷歌上搜索,但找不到我问题的答案 如果满足条件,我会尝试从第一个提交行获取一个值 例如:R 如果满足条件,如何从提交行中获取值?,r,R,我在谷歌上搜索,但找不到我问题的答案 如果满足条件,我会尝试从第一个提交行获取一个值 例如: Pupil participation bonus 2 55 6 2 33 3 2 88 9 2 0 -100 2 44 4 2 66 7
Pupil participation bonus
2 55 6
2 33 3
2 88 9
2 0 -100
2 44 4
2 66 7
2 0 -33
到
所以我需要这样做:
迭代数据帧并检查下一行,直到参与度等于0,从该行获得奖金,从当前行添加奖金,并将其写入bonusAtNoPati
我这里的问题是“检查下一行,直到参与等于0,并从该行获得奖金”
我知道如何遍历整个列表,但不知道在当前点(行)之后
我需要对整个列表执行这个过程,在这里我可以以随机顺序获得任何随机参与值
有人知道如何实现它吗
编辑时,我还添加了另一列(“sumBonusTillParticipation=0”,只需要求和值),这更难实现。R是一种非常难学的语言=(您可以使用
哪个
来获得哪个行号参与为0
df <- read.table(text = 'Pupil participation bonus
2 55 6
2 33 3
2 88 9
2 0 -100
2 44 4
2 66 7
2 0 -33', header = T)
index <- c(0, which(df$participation == 0))
diffs <- diff(index)
df$tp <- rep(df$bonus[index], times = diffs)
df$bonusAtNoParti <- df$bonus + df$tp
df$bonusAtNoParti[index] <- 0
df$tp <- NULL
Pupil participation bonus bonusAtNoParti
1 2 55 6 -94
2 2 33 3 -97
3 2 88 9 -91
4 2 0 -100 0
5 2 44 4 -29
6 2 66 7 -26
7 2 0 -33 0
df这个回答OP有什么问题?它似乎重现了你想要的结果。我没有完全得到上面的评论。如果这个答案在某些情况下不起作用,请展示这种情况编辑你的问题。嘿,尼古拉,米因卡斯刚刚编辑了他的答案,别担心=)@fReezMA你应该给出反馈。如果这个答案对你有帮助,请投赞成票或接受它(或两者兼而有之)。至少,你应该说它是否解决了你的问题。这里的人们为你和社区贡献了一部分时间,你至少应该给出一些反馈。我想我问了一个错误的问题,但是你的代码似乎起作用了。我投票并接受它,这样其他有同样问题的人就可以利用你的指导来解决它。非常感谢。
df <- read.table(text = 'Pupil participation bonus
2 55 6
2 33 3
2 88 9
2 0 -100
2 44 4
2 66 7
2 0 -33', header = T)
index <- c(0, which(df$participation == 0))
diffs <- diff(index)
df$tp <- rep(df$bonus[index], times = diffs)
df$bonusAtNoParti <- df$bonus + df$tp
df$bonusAtNoParti[index] <- 0
df$tp <- NULL
Pupil participation bonus bonusAtNoParti
1 2 55 6 -94
2 2 33 3 -97
3 2 88 9 -91
4 2 0 -100 0
5 2 44 4 -29
6 2 66 7 -26
7 2 0 -33 0