我有一个数据框,我在列之间有所有可能的组合。我想从我的数据框中获得每个组合向量的频率。 例如:
> DF
A B C
1 11 2 432
2 11 3 432
3 13 1 241
4 13 4 241
5 13 5 241
6 28 42 35
7 28 61 35
> f
[[1]]
[1] "A" "B"
[[2]]
[1] "A" "C"
[[3]]
[1] "B" "C"
[[4]]
[1] "A" "B" "C"
这是我的代码,得到了这个社区成员的慷慨捐助:
> library(plyr)
> res=list()
> for (j in 1:length(f)){
+ res[[j]]=count(DF,f[[j]])
+ }
> res
[[1]]
A B freq
1 11 2 1
2 11 3 1
3 13 1 1
4 13 4 1
5 13 5 1
6 28 42 1
7 28 61 1
[[2]]
A C freq
1 11 432 2
2 13 241 3
3 28 35 2
[[3]]
B C freq
1 1 241 1
2 2 432 1
3 3 432 1
4 4 241 1
5 5 241 1
6 42 35 1
7 61 35 1
[[4]]
A B C freq
1 11 2 432 1
2 11 3 432 1
3 13 1 241 1
4 13 4 241 1
5 13 5 241 1
6 28 42 35 1
7 28 61 35 1
即使使用10000x8数据帧,也能正常工作。现在我将使用freq> 1来获得组合。两种方式具有相同的输出。
> lapply(res, subset, freq > 1)
或
> threshold <- 1
> purrr::map(res, function(x) {
+ x[x[["freq"]] > threshold, ]
+ })
[[1]]
[1] A B freq
<0 rows> (or 0-length row.names)
[[2]]
A C freq
1 11 432 2
2 13 241 3
3 28 35 2
[[3]]
[1] B C freq
<0 rows> (or 0-length row.names)
[[4]]
[1] A B C freq
<0 rows> (or 0-length row.names)
的问题:
我用&#34; table&#34;运行代码而不是&#34;计数&#34;,但它不起作用。我想比较这些函数与大数据帧之间的执行时间。
我想用freq对最终输出进行除法和排序,以得到这样的结果:
[[1]]
A C freq
1 13 241 3
[[2]]
A C freq
1 11 432 2
[[3]]
A C freq
1 28 35 2
感谢您提供任何帮助。