小编Aki*_*ami的帖子

加速R中大数据帧的处理

上下文

我一直在尝试实现本文最近提出的算法.给定大量的文本(语料库)的,该算法应该返回特性Ñ -grams(即,序列Ñ语料库的话).用户可以决定适当的n,并且在我尝试使用n = 2-6时,就像在原始论文中一样.换句话说,使用该算法,我想提取表征语料库的2到6克.

我能够实现基于哪个特征n -gram被识别来计算得分的部分,但是一直在努力消除非特征性的.

数据

我有一个名为的列表token.df,其中包含五个数据框,包括出现在语料库中的所有n- gram.每个数据帧对应于n- gram中的每个n.例如,按字母顺序包括所有bigrams(2-gram)及其分数(下面称为mi).token.df[[2]]

> head(token.df[[2]])
w1    w2      mi
_      eos  17.219346
_   global   7.141789
_     what   8.590394
0        0   2.076421
0       00   5.732846
0      000   3.426785
Run Code Online (Sandbox Code Playgroud)

在这里,二元组0 0(虽然它们不是这样的单词)的得分为2.076421.由于数据框包括出现在语料库中的所有n- gram,因此它们每行都有超过一百万行.

> sapply(token.df, nrow)
[[1]]
NULL

[[2]]
[1] 1006059  # number of unique bigrams in the corpus

[[3]]
[1] 2684027  # number of unique trigrams …
Run Code Online (Sandbox Code Playgroud)

r corpus dataframe

10
推荐指数
1
解决办法
643
查看次数

tidyr中的spread()如何处理因子水平

我正在操纵我的数据,发现我在这个过程中的某些方面做错了.当我探讨这个问题,这个问题归结为以下行为spread()tidyr包.

这是一个示范性的例子.我们假设我们有一个如下数据框.

> d <- data.frame(factor1 = rep(LETTERS[1:3], each = 3),
+   factor2 = rep(paste0("level", c(1, 2, 10)), 3),
+   num = 1:9
+ )  
> d
  factor1 factor2 num
1       A  level1   1
2       A  level2   2
3       A level10   3
4       B  level1   4
5       B  level2   5
6       B level10   6
7       C  level1   7
8       C  level2   8
9       C level10   9
Run Code Online (Sandbox Code Playgroud)

我想要做的是将这个长格式的数据帧转换为宽格式.我认为这spread()是一种方法.然而,结果并不是我的预期.

> spread(d, factor2, num)
  factor1 level1 level2 …
Run Code Online (Sandbox Code Playgroud)

r spread tidyr

5
推荐指数
1
解决办法
3万
查看次数

标签 统计

r ×2

corpus ×1

dataframe ×1

spread ×1

tidyr ×1