R 频率表包含 0

标签 r frequency

我正在处理一个大约有 700 000 行的 data.frame。它包含来自 twitter 的 statusupdates 的 ID 和相应的用户名。我只想知道那里有多少不同的用户以及他们发了多少次推文。所以我认为这是一个非常简单的使用表格的任务。但是我注意到我得到了不同的结果。

最近我将列转换为这样的字符

>freqs <- as.data.frame(table(as.character(w_dup$from_user))
>nrow(freqs)
[1] 239678

2个月前我就是这样做的
>freqs <- as.data.frame(table(w_dup$from_user)
>nrow(freqs)
[1] 253594

我注意到这样数据框包含频率为 0 的用户名。这怎么可能?如果用户名在数据集中,它必须至少出现一次。

?表没有帮助我。我也无法在较小的数据集上重现这个问题。

我做错了什么。还是我误解了表格的使用?

最佳答案

列的类型是这里的问题,还要记住,在对数据框进行子集化时,因子水平保持不变:

# Full data frame
(df <- data.frame(x = letters[1:3], y = 1:3))
  x y
1 a 1
2 b 2
3 c 3
# Its structure - all three levels as it should be
str(df)
'data.frame':   3 obs. of  2 variables:
 $ x: Factor w/ 3 levels "a","b","c": 1 2 3
 $ y: int  1 2 3
# A smaller data frame
(newDf <- df[1:2, ])
  x y
1 a 1
2 b 2
# But the same three levels
str(newDf)
'data.frame':   2 obs. of  2 variables:
 $ x: Factor w/ 3 levels "a","b","c": 1 2
 $ y: int  1 2

所以第一列包含因子。在这种情况下:
table(newDf$x)

a b c 
1 1 0 

所有级别( "a","b","c" )都被考虑在内。和这里
table(as.character(newDf$x))

a b 
1 1 

它们不再是因素。

关于R 频率表包含 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12226991/

相关文章:

r - geom_smooth 提供与单独的 nls 不同的拟合

具有命名字段访问的 python 张量

MySQL SELECT 按组最频繁

r - R中多个 bool 或非 bool 列的频率

r - 列中非零或特定数字的频率

r - 应用 CSS 使 ioslides 样式的代码更小

r - 反转累积总和的功能方法?

r - 需要将 data.table 列的值从 "Yes","No"更改为 1,0

audio - 除了FFT以外,还有没有其他方法可以实现Guitar Tuner?

c++ - 如何找到给定数字在数组中的范围内的频率?