假设我有以下数据框data
-
V1 V2
A 3
A 2
A 1
B 2
B 3
C 4
C 3
C 1
C 2
现在我想提取每个级别的信息,即{{1}的A
,B
,C
,D
和E
} }}。例如,如果我选择在V1
的每个级别V2
中查看不同级别的总和,那么代码应该是什么?
我想要的输出是 -
V1
我尝试 V1 V2
A 6
B 5
C 10
和lapply
,但他们没有提供我想要的信息。当然我试过了sapply
没有任何意义。
此外,事先(可能有点棘手),如果我想看sapply(data,unique)
中V2
所有级别中唯一的值,如何去做吧?
谢谢!!
答案 0 :(得分:3)
我认为这就是你想要的,因为它会找到不同群体共有的独特价值观:
每个级别V2
V1
值
Reduce(intersect, split(dat$V2, dat$V1))
#[1] 3 2
每个级别V1
V2
值
Reduce(intersect, split(dat$V1, dat$V2))
#[1] "C"
答案 1 :(得分:1)
使用data.table
,我们可以在' V2'中找到unique
值。在' V1'。
library(data.table)
setDT(data)[,uniqueN(V1)==uniqueN(data$V1) , by = V2][(V1)]$V2
#[1] 3 2
和普通' V1'在' V2'
的每个独特元素中setDT(data)[, if(uniqueN(V1)==1) .SD , by = V2]$V1
#[1] "C"
答案 2 :(得分:0)
也许这很有用
output <- aggregate(data=df,V2~.,FUN=paste)
为了提取V2
中的常见值,V1
的所有级别都使用此
Reduce(intersect,output$V2)