如何通过在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