用R中的相对频率有效替换数据框列的值

狗纸

我有一个巨大的数据集(〜7 Gb),我需要用相对频率(即freq(user_id)/ unique(user_id))有效地替换一个变量(iser ID)。最小示例:

id <- c(1050, 1324, 5, 7, 1050, 7, 8)
table(id)
id
   5    7    8 1050 1324 
   1    2    1    2    1 

然后我尝试

freq <- ave(id, id, FUN = function(X) length(X) / length(unique(id)))
df <- data.frame(id = id, freq = freq)

输出:

    id freq
1 1050  0.4
2 1324  0.2
3    5  0.2
4    7  0.4
5 1050  0.4
6    7  0.4
7    8  0.2

但是根据我的数据集,该解决方案已经运行了三个小时!任何帮助表示赞赏:)

R 2分钟教程

这是一个整洁的实现:

library(tidyverse)
id <- c(1050, 1324, 5, 7, 1050, 7, 8)

data_frame( id = id)-> my_df # creating df

  my_df%>% 
    mutate(unique =  unique(id) %>% length) %>% # addying column unique, with the number of unique id
  group_by(id) %>%                              # group by id
  mutate(
    n=n(),                                      # number of observations for the current group         
    freq = n / unique                           # n / unique gives the freq
    )

如果您想了解有关group_by的更多信息,请查看此教程:https : //www.youtube.com/watch?v= 70UcgabaB_I&t = 14s

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何有效地用随机值替换数据框列列表中的某个值?

用从对象中提取的内容替换数据框中的值的有效方法?

根据数据框“字典”用数字值替换字符串的有效方法

如何有效地用数据框中的中位数替换范围

用pyspark替换数据框中的列的所有值

用熊猫替换数据框中列的所有值

替换熊猫数据框中每个单元格值的有效方法

根据具有有效值的行数从数据框中删除列

有没有一种有效的方法来用另一种有效的方法替换数据框中的值?

替换矩阵(R)中的值的有效方法

熊猫:在分组数据框中仅在选定列中联接值的有效方法

Pyspark数据框:检查日期列中的值是否有效

如何有效地选择Spark中包含特定值的数据框列?

用 0 有效地替换 h2o 数据帧中的所有 NULL 值

用R中的列值替换整个数据框中的值

用带有向量元素的值替换数据框列中的NA值

R:用更具描述性的值替换数据框列中的值

根据R数据帧中其他列的值缩放列的有效方法

根据R数据帧中其他列的值缩放列的有效方法

有效地找到R中数据帧中不同行的列值计数

用行名替换r中数据框中的值

按多列中的值在 R 中有效过滤数据帧

用列的顺序替换Pandas数据框中的值

Pandas 用列、行条件替换数据框中的值

用常量替换数据框中列的非 NA 值

用numpy替换数据框的多列中的值

隔离特定列中具有相同值的数据框行的有效方法是什么?

用R中的用户定义函数替换数据框列值

用R的数据框中的星星替换p值