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版本中引入的