这就是我的数据框架:
a <- c(1,1,4,4,5)
b <- c(1,2,3,3,5)
c <- c(1,4,4,4,5)
d <- c(2,2,4,4,5)
e <- c(1,5,3,3,5)
df <- data.frame(a,b,c,d,e)
我想写一些东西,它返回向量e中具有重复值的向量a,b,c,d的所有唯一实例。
例如:
a b c d e
1 1 1 1 2 1
2 1 2 4 2 5
3 4 3 4 4 3
4 4 3 4 4 3
5 5 5 5 5 5
第3行和第4行直到向量d(具有4344的组合)完全相同,因此只应返回其中一个实例,但它们在向量e中具有2个重复值。我想要计算那些 - 所以4344的组合在向量e中有2个重复值。
预期输出将是某个组合(例如4344)在向量e中重复多少次的次数。所以在这种情况下它会是这样的:
a b c d e
4 3 4 4 2
R和SQL都可以工作,无论工作如何。
答案 0 :(得分:2)
再次,请参阅上面的评论,但我相信以下内容为您提供了第一个问题的开始。首先,创建一个&#34;密钥&#34;变量(在本例中名为key_abcd
,使用tidyr::unite
到unite
列a
,b
,c
和d
) 。然后,按此e
变量计算key_abcd
。 group_by
是隐含的。
library(tidyr)
library(dplyr)
df <- data.frame(a,b,c,d,e,f,g)
df %>%
unite(key_abcd, a, b, c, d) %>%
count(key_abcd, e)
# key_abcd e n
# (chr) (dbl) (int)
# 1 1_1_1_2 1 1
# 2 1_2_4_2 5 1
# 3 4_3_4_4 3 2
# 4 5_5_5_5 5 1
从你如何表达这个问题看来,你只对#34;多于一个&#34;因此,您可以将%>% filter(n > 1)
添加到上面的代码中。