Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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_Matrix - Fatal编程技术网

如何通过在r中分组计算两列中的转换来生成矩阵表

如何通过在r中分组计算两列中的转换来生成矩阵表,r,matrix,R,Matrix,这是我的数据 id<- c("1", "1", "1", "1", "2", "2", "2", "2", "3", "3", "3", "3") behav1<- c("A", "C", "C&q

这是我的数据

id<- c("1", "1", "1", "1", "2", "2", "2", "2", "3", "3", "3", "3")
behav1<- c("A", "C", "C", "B", "C", "C", "A", "A", "A", "B", "B", "A")
behav2<- c("C", "A", "A", "B", "A", "B", "A", "B", "C", "B", "B", "C")
df <- data.frame(id, cond1, cond2)
然而,我得到的是所有受试者的总数

我做错了什么? 提前谢谢你的帮助

这是否有效:

library(dplyr)
library(purrr)
map(df %>% group_by(id) %>% group_split(.keep = 0), table)
[[1]]
      behav2
behav1 A B C
     A 0 0 1
     B 0 1 0
     C 2 0 0

[[2]]
      behav2
behav1 A B
     A 1 1
     C 1 1

[[3]]
      behav2
behav1 B C
     A 0 2
     B 2 0

在这里不使用
table()
可能更容易。取而代之的是,
groupby()
所有3列(为每个独特的人和转换提供组),然后总结:

库(dplyr)
#> 
#>正在附加包:“dplyr”
#>以下对象已从“package:stats”屏蔽:
#> 
#>滤波器,滞后
#>以下对象已从“package:base”屏蔽:
#> 
#>相交、setdiff、setequal、并集
身份证件
#>1 A C 1
#>2 1 B 1
#>3 1 C A 2
#>4 2 A 1
#>5 2 A B 1
#>6 2 C A 1
#>7 2 C B 1
#>8 3 A C 2
#>9 3 B 2
以宽泛的格式呈现这一点可能更容易:

(宽\u结果)
tidyr::枢轴_加宽(
id\u cols=“id”,
name_from=c(“behav1”、“behav2”),
名称\u sep=“->”,
值\u from=“n”
) |> 
突变(跨越(一切(),tidyr::replace_na,replace=0))
)
#>#tibble:3 x 7
#>id`A->C``B->B``C->A``A->A``A->B``C->B`
#>                           
#> 1 1            1        1        2        0        0        0
#> 2 2            0        0        1        1        1        1
#> 3 3            2        2        0        0        0        0

由(v2.0.0)于2021年5月30日创建

df中的
cond1
cond2
是什么?好的一个@karthik+1.
library(dplyr)
library(purrr)
map(df %>% group_by(id) %>% group_split(.keep = 0), table)
[[1]]
      behav2
behav1 A B C
     A 0 0 1
     B 0 1 0
     C 2 0 0

[[2]]
      behav2
behav1 A B
     A 1 1
     C 1 1

[[3]]
      behav2
behav1 B C
     A 0 2
     B 2 0