我有一个关于电影收视率的大型数据集(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
“大数据”表等同于什么?
答案 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"))