R 识别并计算多列中的重复值

R 识别并计算多列中的重复值,r,formatting,R,Formatting,我有一个具有多个列的数据集,这些列看起来类似于: ID1 ID2 ID3 ID4 Blue Grey Fuchsia Green Black Blue Orange Blue Green Green Yellow Pink Pink Yellow NA Orange 我要做的是计算每一个值在四列中被复制的次数。例如,这就是我想从上面得到的: ID Replicates Blue 3

我有一个具有多个列的数据集,这些列看起来类似于:

ID1     ID2     ID3      ID4
Blue    Grey    Fuchsia  Green
Black   Blue    Orange   Blue
Green   Green   Yellow   Pink
Pink    Yellow  NA       Orange
我要做的是计算每一个值在四列中被复制的次数。例如,这就是我想从上面得到的:

ID      Replicates   
Blue    3       
Black   1    
Green   3       
Pink    2
Grey    1
Yellow  2
Fuchsia 1 
Orange  2  
我还希望能够询问数据集中哪个ID值的频率大于2。因此,预期结果将是:绿色和蓝色

有没有关于如何在R中实现这一点的想法?
谢谢

只需一个常规的
表格
就可以创建一个充满因素的数据集

> ( tab <- table(unlist(data)) )

  Black    Blue   Green    Pink    Grey  Yellow Fuchsia  Orange 
      1       3       3       2       1       2       1       2 
还有一个
as.data.frame
方法

> as.data.frame(tab)
     Var1 Freq
1   Black    1
2    Blue    3
3   Green    3
4    Pink    2
5    Grey    1
6  Yellow    2
7 Fuchsia    1
8  Orange    2

一个
dplyr
/
tidyr
解决方案

ID1<-c("Blue", "Black", "Green", "Pink")
ID2<-c("Grey", "Blue", "Green", "Yellow")
ID3<-c("Fuchsia", "Orange", "Yellow", NA)
ID4<-c("Green", "Blue", "Pink", "Orange")
mydf<-data.frame(ID1,ID2,ID3,ID4)


library(dplyr)
library(tidyr)

mydf %>%
  gather(key,value,1:4) %>%
  group_by (value) %>%
  tally

    value n
1   Black 1
2    Blue 3
3 Fuchsia 1
4   Green 3
5    Grey 1
6  Orange 2
7    Pink 2
8  Yellow 2
9      NA 1

与斯克里文的方法相比,这似乎是非常巴洛克式的。简单而有效的方法。谢谢你们,先生们!
ID1<-c("Blue", "Black", "Green", "Pink")
ID2<-c("Grey", "Blue", "Green", "Yellow")
ID3<-c("Fuchsia", "Orange", "Yellow", NA)
ID4<-c("Green", "Blue", "Pink", "Orange")
mydf<-data.frame(ID1,ID2,ID3,ID4)


library(dplyr)
library(tidyr)

mydf %>%
  gather(key,value,1:4) %>%
  group_by (value) %>%
  tally

    value n
1   Black 1
2    Blue 3
3 Fuchsia 1
4   Green 3
5    Grey 1
6  Orange 2
7    Pink 2
8  Yellow 2
9      NA 1
mydf %>%
  gather(key,value,1:4) %>%
  group_by (value) %>%
  tally %>%
  filter (n>2)


  value n
1  Blue 3
2 Green 3