如果满足条件,则指定累进编号-R
每次在另一列中满足给定条件时,如何为列指定累进数?鉴于这些数据:如果满足条件,则指定累进编号-R,r,R,每次在另一列中满足给定条件时,如何为列指定累进数?鉴于这些数据: a <- data.frame(var = c(1, 0, 0, 1, 4, 5, 6, 1, 7, 1, 1)) 我考虑过其他方法,但没能成功。 谢谢 您可以使用ifelse和cumsum: a$newvar <- ifelse(a$var==1, cumsum(a$var==1), NA) var newvar 1 1 1 2 0 NA 3 0 NA 4 1
a <- data.frame(var = c(1, 0, 0, 1, 4, 5, 6, 1, 7, 1, 1))
我考虑过其他方法,但没能成功。
谢谢 您可以使用
ifelse
和cumsum
:
a$newvar <- ifelse(a$var==1, cumsum(a$var==1), NA)
var newvar
1 1 1
2 0 NA
3 0 NA
4 1 2
5 4 NA
6 5 NA
7 6 NA
8 1 3
9 7 NA
10 1 4
11 1 5
a$newvar您可以使用ifelse
和cumsum
:
a$newvar <- ifelse(a$var==1, cumsum(a$var==1), NA)
var newvar
1 1 1
2 0 NA
3 0 NA
4 1 2
5 4 NA
6 5 NA
7 6 NA
8 1 3
9 7 NA
10 1 4
11 1 5
a$newvar我们也可以使用cumsum
a$newVar <- with(a, cumsum(var ==1) * NA^(var!=1))
a$newVar
#[1] 1 NA NA 2 NA NA NA 3 NA 4 5
或者,我们可以使用行序列来代替cumsum
setDT(a)[var==1, newvar := seq_len(.N)]
我们也可以使用cumsum
a$newVar <- with(a, cumsum(var ==1) * NA^(var!=1))
a$newVar
#[1] 1 NA NA 2 NA NA NA 3 NA 4 5
或者,我们可以使用行序列来代替cumsum
setDT(a)[var==1, newvar := seq_len(.N)]
我想在一般情况下再加一件事,如果你想对4、5或其他任何事情做同样的事情
a <- data.frame(var = c(1, 0, 0, 1, 4, 5, 6, 1, 7, 1, 1))
a$New <- ifelse(a$var == 1,1,NA)
a$New[!is.na(a$New)] <- cumsum(a$New[!is.na(a$New)])
我想在一般情况下再加一件事,如果你想对4、5或其他任何事情做同样的事情
a <- data.frame(var = c(1, 0, 0, 1, 4, 5, 6, 1, 7, 1, 1))
a$New <- ifelse(a$var == 1,1,NA)
a$New[!is.na(a$New)] <- cumsum(a$New[!is.na(a$New)])
或者只是a$New如果他想计算var=0怎么办?或任何其他数字?在这种情况下,您的新var将为0;输出:[1]Na0 0 NA NA NA;期望输出:[1]NA 1 2 NA NA NA NA NAI提出了这个解决方案,假设他想要一个特定变量的计数,如果OP只想要累积和,那么ytk的答案是好的。然后,a$New或者只是a$New,如果他想计算var=0怎么办?或任何其他数字?在这种情况下,您的新var将为0;输出:[1]Na0 0 NA NA NA;期望输出:[1]NA 1 2 NA NA NA NA NAI提出了这个解决方案,假设他想要一个特定变量的计数,如果OP只想要累积和,那么ytk的答案是好的。然后,a$New