Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果满足条件,则指定累进编号-R_R - Fatal编程技术网

如果满足条件,则指定累进编号-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