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