计算数据帧中数字的频率

时间:2018-08-18 08:56:04

标签: r

我有一个关于电影收视率的大型数据集(1-10),并且希望获得收视率的分布。我在数据集中也有0,但是实际上它们是NA,但是在项目的稍后阶段(尝试构建推荐系统),我需要将它们作为0。

样本数据

User.ID 60392452 60502258 60915544 60928336 60930535 60934417 60938455 60959037 60976845 1 26 0 0 0 0 0 0 0 0 0 2 51 0 0 0 0 0 0 0 0 0 3 91 0 0 0 0 0 0 0 0 0 4 99 0 0 0 0 0 0 0 0 0 5 114 0 0 0 0 0 0 0 0 0 6 125 0 0 0 0 0 0 0 0 0 7 165 0 0 0 0 0 0 0 0 9 8 243 0 0 10 0 0 0 0 0 0

好吧,它不是很可读,但是“用户ID”列是“ 26”,“ 51”等。用代码表示的电影是“ 60392452”等,并且是列标题。

首先,我使用以下代码:

table(mod_dataset)

但是我收到一条错误消息:

Error in table(mod_dataset) : attempt to make a table with >= 2^31 elements

“大数据”表等同于什么?

1 个答案:

答案 0 :(得分:0)

我真的不确定这是否能回答您的问题,但这是一种逐列列出评分的方法。

res <- sapply(mod_dataset[-1], function(x) table(factor(x, levels = 0:10)))
inx <- apply(res, 1, function(x) all(x == 0))
res[!inx, ]

数据,格式为dput

mod_dataset <-
structure(list(User.ID = c(26L, 51L, 91L, 99L, 114L, 125L, 165L, 
243L), X60392452 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), X60502258 = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L), X60915544 = c(0L, 0L, 0L, 0L, 0L, 
0L, 0L, 10L), X60928336 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), 
    X60930535 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), X60934417 = c(0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L), X60938455 = c(0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L), X60959037 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L), X60976845 = c(0L, 0L, 0L, 0L, 0L, 0L, 9L, 0L)), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8"))