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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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,我试图探索特定问题的反应变化模式。下面是dataset的一个示例 id <- c(1,1,1, 2,2,2, 3,3,3,3, 4,4) item.id <- c(1,1,1, 1,1,1 ,1,1,2,2, 1,1) sequence <- c(1,2,3, 1,2,3, 1,2,1,2, 1,2) score <- c(0,0,0, 0,0,1, 0,1,0,0, 1,0) data <- data.frame("id"=id, "item.id"=item.i

我试图探索特定问题的反应变化模式。下面是dataset的一个示例

id <- c(1,1,1, 2,2,2, 3,3,3,3, 4,4)
item.id <- c(1,1,1, 1,1,1 ,1,1,2,2, 1,1)
sequence <- c(1,2,3, 1,2,3, 1,2,1,2, 1,2)
score <- c(0,0,0, 0,0,1, 0,1,0,0, 1,0)
data <- data.frame("id"=id, "item.id"=item.id, "sequence"=sequence, "score"=score)
data
   id item.id sequence score
1   1       1        1     0
2   1       1        2     0
3   1       1        3     0
4   2       1        1     0
5   2       1        2     0
6   2       1        3     1
7   3       1        1     0
8   3       1        2     1
9   3       2        1     0
10  3       2        2     0
11  4       1        1     1
12  4       1        2     0

有什么想法吗?谢谢

这里有一个选项,通过采用“id”、“item.id”分组的“score”的差异

library(dplyr)
data %>% 
    group_by(id, item.id) %>%
    filter(any(score != 0)) %>%
    mutate(ind = c(0, diff(score))) %>% 
    group_by(ind =  ind[ind!=0][1]) %>% 
    group_split(ind, keep = FALSE)
#[[1]]
# A tibble: 2 x 4
#     id item.id sequence score
#  <dbl>   <dbl>    <dbl> <dbl>
#1     4       1        1     1
#2     4       1        2     0

#[[2]]
# A tibble: 5 x 4
#     id item.id sequence score
#  <dbl>   <dbl>    <dbl> <dbl>
#1     2       1        1     0
#2     2       1        2     0
#3     2       1        3     1
#4     3       1        1     0
#5     3       1        2     1
库(dplyr)
数据%>%
分组依据(id,item.id)%>%
过滤器(任何(分数!=0))%>%
变异(ind=c(0,差异(分数)))%>%
分组依据(ind=ind[ind!=0][1])%>%
组分割(ind,keep=FALSE)
#[[1]]
#一个tibble:2x4
#id item.id序列分数
#          
#1     4       1        1     1
#2     4       1        2     0
#[[2]]
#一个tibble:5x4
#id item.id序列分数
#          
#1     2       1        1     0
#2     2       1        2     0
#3     2       1        3     1
#4     3       1        1     0
#5     3       1        2     1
我会这样做:

library(dplyr)
data.0.to.1 = data %>%
  group_by(id, item.id) %>%
  filter(any(diff(score) > 0))

data.1.to.0 = data %>%
  group_by(id, item.id) %>%
  filter(any(diff(score) < 0))
库(dplyr)
数据.0.到.1=数据%>%
分组依据(id,item.id)%>%
过滤器(任何(差异(分数)>0))
数据.1.到.0=数据%>%
分组依据(id,item.id)%>%
过滤器(任何(差异(分数)<0))

谢谢您的回复。还有,有没有办法只观察最后两次得分尝试而不是任何尝试的差异?@amisos55。在这种情况下,您可能需要在
过滤器
步骤之后,
mutate(ind=c(0,diff(tail(score,2)))%%>%
当我在过滤器之后添加这个过滤器时,它在mutate_impl(.data,dots)中给出了这个错误
错误:`ind`列必须是长度4(组大小)或1,而不是2
@amisos55对不起,
c(0,
应删除,因为
diff
返回的长度小于原始向量的长度
library(dplyr)
data.0.to.1 = data %>%
  group_by(id, item.id) %>%
  filter(any(diff(score) > 0))

data.1.to.0 = data %>%
  group_by(id, item.id) %>%
  filter(any(diff(score) < 0))