R 计算在一列中具有重复记录的唯一行数

R 计算在一列中具有重复记录的唯一行数,r,R,这就是我的数据帧的外观: 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) 第3行和第4行在向量d(组合为4344)之前完全相同,因此只应返回其中的一个实例,但它们在向量e中有2个重复值。我想得到这些的一个计数,所以4344的组合在向量e中有两个重复的值 预期输出将告诉我某

这就是我的数据帧的外观:

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)
第3行和第4行在向量d(组合为4344)之前完全相同,因此只应返回其中的一个实例,但它们在向量e中有2个重复值。我想得到这些的一个计数,所以4344的组合在向量e中有两个重复的值

预期输出将告诉我某个组合(如4344)在向量e中有多少次重复值。因此,在这种情况下,它将类似于:

a b c d   e
4 3 4 4   2

R和SQL都可以工作,不管做什么都可以

同样,请参见我上面的评论,但我相信以下内容将为您的第一个问题提供一个开始。首先,创建一个“key”变量(在本例中名为
key\u abcd
,它使用
tidyr::unite
unite
a
b
c
d
)。然后,通过此变量对
e
进行计数。
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
library(tidyr)
图书馆(dplyr)
df%
联合(键abcd,a,b,c,d)%>%
计数(键_abcd,e)
#钥匙
#(chr)(dbl)(内部)
# 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

从您对问题的措辞来看,您只对“多个”组合感兴趣,因此,您可以在上述代码中添加
%%>%filter(n>1)

如果您打算投反对票,反馈将是有用的。我没有投反对票,但如果您打算使用SQL标记,那你应该有桌子的结构。啊!对我应该这么做。当我为示例创建SQL表时,我将去掉标记。如果您向我们展示给定示例的预期输出,其他人可能会更容易提供帮助。我也没有投反对票,但我猜这是因为你的问题上有两个语言标签,零代码表明你试图先自己解决问题。另外,你介意解释一下%>%的确切含义吗?我会将“第二部分”作为一个单独的问题提问,并删除原始问题中对它的所有引用。此外,我将扩展您的示例数据,以包括多个通过/失败案例。
%%>%%
是一个正向管道操作符,允许您将多个操作链接在一起。请参阅
?“%%>%”
或查看
dplyr
中的一些渐晕图,或查找
magrittr
包。长和短:
x%>%f(y)
变成
f(x,y)
。谢谢Jason。编辑了我的帖子,我会听从你的建议。
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