Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.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,我有这样一个数据帧: df <- data.frame("subj.no" = rep(1:3, each = 24), "trial.no" = rep(1:3, each = 8, length.out = 72), "item" = c(rep(c("ball", "book"), 4), rep(c("doll", "rope"), 4), rep(c("fish", "box"), 4), rep(c("pa

我有这样一个数据帧:

df <- data.frame("subj.no" = rep(1:3, each = 24), 
                 "trial.no" = rep(1:3, each = 8, length.out = 72), 
                 "item" = c(rep(c("ball", "book"), 4), rep(c("doll", "rope"), 4), rep(c("fish", "box"), 4), rep(c("paper", "candle"), 4), rep(c("horse", "marble"), 4), rep(c("doll", "rope"), 4), rep(c("tree", "dog"), 4), rep(c("ball", "book"), 4), rep(c("horse", "marble"), 4)),
                 "rep.no" = rep(1:4, each = 2, length.out = 72),
                 "DV" = c(1,0,1,0,1,0,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,1,1,1,1,0,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,
                      1,0,0,1,1,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,0,1,0,1,1,0),)
DV.no = c(1,0,2,0,3,0,0,1,1,0,2,0,0,0,3,0,1,0,2,0,3,0,0,0,0,1,1,2,2,0,0,3,0,1,1,0,0,2,0,3,1,1,0,2,0,0,2,0,0,1,1,0,2,0,0,2,1,1,2,0,0,0,0,0,0,1,0,2,0,3,1,0)
因此,基本上,对于
sub.no
trial.no
item
中的每个唯一值组合,只要
DV
的值为1,则应将1添加到新变量的计数中

(备注:
rep.no
列不是相关值组合的一部分。但它无论如何都在df中,因为我不知道它是否对解决方案有用,所以我将其保留在那里。)


如何在R中做到这一点?

我们可以通过“DV”列上的
cumsum
进行分组

library(dplyr)
df %>%
    group_by(subj.no, trial.no, item) %>% 
     mutate(V.no = cumsum(DV)* DV)

或者在
base R
中使用
ave

df$V.no <- with(df, DV *ave(DV, subj.no, trial.no, item, FUN = cumsum))

df$V.不,谢谢您的快速回复!但总数并不是我所需要的。我不想每次给那个组合相同的总数,而是想给那个特定的行一个计数,即1出现的“第多少次”。因此,对于该特定组合中的每一个新1,该值将变得更高。