gpt4 book ai didi

r - 在数据框中更有效地使用临时列(即时创建)

转载 作者:行者123 更新时间:2023-12-01 12:37:30 25 4
gpt4 key购买 nike

考虑以下数据框:
df <- data.frame(replicate(5,sample(1:10, 10, rep=TRUE)))
如果我想将每一行除以其总和(以进行概率分布),我需要执行以下操作:
df %>% mutate(rs = rowSums(.)) %>% mutate_each(funs(. / rs), -rs) %>% select(-rs)
这真的感觉效率低下:

  • 创建 rs栏目
  • 将每个值除以其对应的行 rowSums()
  • 删除临时创建的列以清理原始数据框。

  • 使用现有列时,感觉更自然:
    df %>% summarise_each(funs(weighted.mean(., X1)), -X1)
    使用 dplyr ,是否有比在处理后添加和删除临时列更好的方法来处理临时列(即时创建)?

    我也很感兴趣 data.table会处理这样的任务。

    最佳答案

    正如我在上面的评论中提到的,我认为将这些数据保存在 data.frame 中是没有意义的。或 data.table ,但如果您必须这样做,以下内容将在不转换为矩阵的情况下完成,并说明如何在 data.table 中创建临时变量j-expression :

    dt = as.data.table(df)

    dt[, names(dt) := {sums = Reduce(`+`, .SD); lapply(.SD, '/', sums)}]

    关于r - 在数据框中更有效地使用临时列(即时创建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310449/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com