这可能是一个非常简单的问题。但是我没有使用我已知的 dplyr 函数。这是数据:

tab1 <- read.table(header=TRUE, text="
    Col1    A1  A2  A3  A4  A5
    ID1 43  52  33  25  59
                       ID2  27  41  20  71  22
                       ID3  37  76  36  27  44
                       ID4  23  71  62  25  63
                      ")
tab1
  Col1 A1 A2 A3 A4 A5
1  ID1 43 52 33 25 59
2  ID2 27 41 20 71 22
3  ID3 37 76 36 27 44
4  ID4 23 71 62 25 63

我打算通过保持值低于 30 来获得如下所示的列联表。
Col1  Col2  Val
ID1   A4    25
ID2   A1    27
ID2   A3    20
ID2   A5    22
ID3   A4    27
ID4   A1    23
ID4   A4    25

最佳答案

或者,如果您坚持 dplyr ness,您可以先对数据进行 gather,然后根据需要进行 filter

library(dplyr)
library(tidyr)
tab1 %>%
  gather(Col2, Val, -Col1) %>%
  filter(Val < 30)

#   Col1 Col2 Val
# 1  ID2   A1  27
# 2  ID4   A1  23
# 3  ID2   A3  20
# 4  ID1   A4  25
# 5  ID3   A4  27
# 6  ID4   A4  25
# 7  ID2   A5  22

关于r - 基于阈值的汇总表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32360418/

10-12 17:34