r-矩阵中给定值出现的唯一元素的最大数量

r-矩阵中给定值出现的唯一元素的最大数量,r,matrix,count,unique,R,Matrix,Count,Unique,假设我得到了这样一个数据帧: > id = c(1,1,1,1,1,2,2,2,3,3) > type = c("a","a","b","c","a","a","b","c","a","c") > data = data.frame(id,type) > data id type 1 1 a 2 1 a 3 1 b 4 1 c 5 1 a 6 2 a 7 2 b 8 2 c 9 3

假设我得到了这样一个数据帧:

> id = c(1,1,1,1,1,2,2,2,3,3)
> type = c("a","a","b","c","a","a","b","c","a","c")
> data = data.frame(id,type)
> data
   id type
1   1    a
2   1    a
3   1    b
4   1    c
5   1    a
6   2    a
7   2    b
8   2    c
9   3    a
10  3    c
我想知道每个id的唯一的类型的最大数量是多少,但不是值中的最大数量。这个基本包装中有一个班轮吗?谢谢。你可以试试

 library(data.table)#v1.9.5+
 setDT(data)[, list(type=uniqueN(type)) ,id]

或使用
base R

  aggregate(type~id, data, FUN=function(x) length(unique(x)))
你可以试试

 library(data.table)#v1.9.5+
 setDT(data)[, list(type=uniqueN(type)) ,id]

或使用
base R

  aggregate(type~id, data, FUN=function(x) length(unique(x)))

这行外观复杂的代码可以为您实现以下功能:

apply(表(数据),边距=1,FUN=function(x)名称(其中x==max(x)))

让我将代码分解为更简单的部分

我们可以使用
table(data)
来获得每个id中唯一类型的dataframe计数的摘要

    type
id  a b c
  1 3 1 1
  2 1 1 1
  3 1 0 1
我们可以看到,在id 1中有3个a,而id 2中每个a,b和c都有1个,依此类推

现在,转到复杂代码——它将简单地给出每个id具有最大计数的列名称(类型)。 有关
应用
哪个应用

我希望这能回答这个问题。 如果您需要进一步澄清,请告诉我

编辑:运行一个衬里的结果如下所示:

$`1`
[1] "a"

$`2`
[1] "a" "b" "c"

$`3`
[1] "a" "c"
i、 例如,键入每个id中的最大计数
这就是你要问的,不是吗?

这行复杂的代码可以帮你解决问题:

apply(表(数据),边距=1,FUN=function(x)名称(其中x==max(x)))

让我将代码分解为更简单的部分

我们可以使用
table(data)
来获得每个id中唯一类型的dataframe计数的摘要

    type
id  a b c
  1 3 1 1
  2 1 1 1
  3 1 0 1
我们可以看到,在id 1中有3个a,而id 2中每个a,b和c都有1个,依此类推

现在,转到复杂代码——它将简单地给出每个id具有最大计数的列名称(类型)。 有关
应用
哪个应用

我希望这能回答这个问题。 如果您需要进一步澄清,请告诉我

编辑:运行一个衬里的结果如下所示:

$`1`
[1] "a"

$`2`
[1] "a" "b" "c"

$`3`
[1] "a" "c"
i、 例如,键入每个id中的最大计数
这就是你要问的,不是吗?

@Marius你可以使用
聚合(Type~id,data,FUN=function(x)length(unique(x)))
True。使用聚合,然后从聚合列中获取最大值。谢谢你能在问题的答案中添加聚合解决方案吗?这样我就可以将其标记为正式答案。谢谢again@akrun我在尝试data.table脚本时遇到此错误:[.data.table
(setDT(data),list(type=uniqueN(type)),id):找不到函数“uniqueN”
@plafort我正在使用
devel
版本的
data.table
。我认为
uniqueN
是在devel.table中引入的version@Marius您可以使用聚合(Type~id,data,FUN=function(x)length(unique(x)))True。使用聚合,然后我只从聚合列中获取最大值。谢谢。您能在问题的答案中添加聚合解决方案,以便我可以将其标记为正式答案。谢谢again@akrun我在尝试data.table脚本时遇到此错误:[.data.table
(setDT(data),list(type=uniqueN)中的
错误(type)),id):找不到函数“uniqueN”
@plafort我正在使用
devel
版本的
data.table
。我想
uniqueN
是在devel版本中引入的