数据框

时间:2018-01-22 09:42:27

标签: r

我有一个数据框,我在列之间有所有可能的组合。我想从我的数据框中获得每个组合向量的频率。 例如:

> 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
    

感谢您提供任何帮助。

0 个答案:

没有答案