【问题标题】:Wide to long binary matrix adding counts宽到长二进制矩阵相加计数
【发布时间】:2021-06-09 11:01:49
【问题描述】:

我想从宽格式变为长格式,但保留计数值并分解列。我有这个:

variable   LF1   LF2   LF3   LF4   LF5   Counts
A           1     0     0     0     0      5 
A           1     0     1     0     0      1    
B           1     0     0     1     0      3 
B           1     0     0     0     1      2 
B           1     0     0     0     0      1 
C           1     0     0     0     0      8 
D           1     1     0     0     0      6 
D           1     0     1     0     0      4

我想要以下内容:

 variable   factor    count
    A         F1        6
    A         F3        1
    B         F1        6
    B         F4        3
    B         F5        2
    C         F1        8
    D         F1        10
    D         F2        6
    D         F3        4

这意味着数据在汇总计数时同时转换为 long。 我已经尝试了所有我能在 reshape2 中想到的组合,但我没有想法,例如

data_grouped <- reshape2::melt(data, id.vars=c("variable"))
data_grouped <- reshape2::melt(data, id.vars=c("variable","LF1","LF2","LF3","LF4","LF5"))

我还看到通过连接以下内容可以得到类似的东西:

data %>% group_by(variable, LF1) %>% summarise(sum(counts))
data %>% group_by(variable, LF2) %>% summarise(sum(counts))

但这非常低效且不是理想的解决方案,因此我非常感谢您提供帮助。

【问题讨论】:

标签: r dplyr group-by reshape


【解决方案1】:

假设你的数据被称为df

library(tidyverse)
df %>%
  pivot_longer(cols = starts_with("LF"),
               names_to = "factor") %>%
  filter(value == 1) %>%
  group_by(variable, factor) %>%
  summarize(count = sum(Counts)) %>%
  mutate(factor = str_remove(factor, "L")) %>%
  ungroup()

给予:

# A tibble: 9 x 3
  variable factor count
  <chr>    <chr>  <int>
1 A        F1         6
2 A        F3         1
3 B        F1         6
4 B        F4         3
5 B        F5         2
6 C        F1         8
7 D        F1        10
8 D        F2         6
9 D        F3         4

【讨论】:

  • 太棒了!谢谢!
  • 如果你能在上面提供一个可重复的例子,以防万一有人想提供帮助并找到一个潜在的更好的解决方案,那仍然会很棒。
猜你喜欢
  • 1970-01-01
  • 2018-01-21
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多