R创建一个相似与相似对照表

gstyhher  于 2023-01-22  发布在  其他
关注(0)|答案(2)|浏览(131)

有人能帮助我在R中进行这个转换吗?我想转换这个表
| 识别号|条件|计数|
| - ------|- ------|- ------|
| 1个|A类|1个|
| 1个|B|无|
| 第二章|A类|1个|
| 第二章|B|1个|
| 三个|A类|无|
| 三个|B|1个|
| 四个|A类|1个|
| 四个|B|1个|
| 五个|A类|1个|
| 五个|B|1个|
| 六个|A类|1个|
| 六个|B|无|
| 七|A类|无|
| 七|B|1个|
| 八个|A类|无|
| 九|B|无|
放进这张table
创建一个相似-相似对照表
| A类|B|ID计数|
| - ------|- ------|- ------|
| 1个|无|第二章|
| 无|无|1个|
| 1个|1个|三个|
| 无|1个|第二章|
任何帮助都将不胜感激。谢谢。菲尔,

yyyllmsg

yyyllmsg1#

您可以:

with(dat, split(Count, Condition)) |>
  table() |>
  data.frame()

  A B Freq
1 0 0    1
2 1 0    2
3 0 1    2
4 1 1    3

数据:

dat <- structure(list(ID = c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 
7, 8, 9), Condition = c("A", "B", "A", "B", "A", "B", "A", "B", 
"A", "B", "A", "B", "A", "B", "A", "B"), Count = c(1, 0, 1, 1, 
0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0)), class = "data.frame", row.names = c(NA, 
-16L))
yyhrrdl8

yyhrrdl82#

下面是一个tidyverse解决方案。我用0填充了缺失值,请注意,这会导致与表中不同的计数(您的意思是用8,8作为最后两个ID,而不是8,9吗?):

data <- read.table(text = "ID   Condition   Count
1   A   1
1   B   0
2   A   1
2   B   1
3   A   0
3   B   1
4   A   1
4   B   1
5   A   1
5   B   1
6   A   1
6   B   0
7   A   0
7   B   1
8   A   0
9   B   0", header = TRUE)

library(tidyr)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

data %>% 
  pivot_wider(
    id_cols = ID,
    names_from = Condition,
    values_from = Count,
    values_fill = 0
  ) %>% 
  count(A, B, name = "Count of ID")
#> # A tibble: 4 × 3
#>       A     B `Count of ID`
#>   <int> <int>         <int>
#> 1     0     0             2
#> 2     0     1             2
#> 3     1     0             2
#> 4     1     1             3

reprex package(v1.0.0)于2023年1月20日创建

相关问题