【问题标题】:Construct dataframe columns based on a function of other columns in R基于 R 中其他列的函数构造数据框列
【发布时间】:2020-07-17 21:37:16
【问题描述】:

我正在尝试找出一种在 R 中执行此操作的方法,理想情况下使用 apply() 系列函数中的某些内容(即不使用 for 循环)。

我想使用基于数据框中其他四列的函数,并且我想将该函数的结果保存在数据框的三个新列中。

例如,如果我有(带有测试数据):

x <- c("var1","var2","var3","var4")
A_x <- c(5,4,3,2)
A_notx <- c(5,6,7,8)
B_x <- c(10,10,5,15)
B_notx <- c(10,10,15,5)
example <- data.frame(A_x,A_notx,B_x,B_notx)
rownames(example) <- x

     A_x A_notx B_x B_notx
var1   5      5  10     10
var2   4      6  10     10
var3   3      7   5     15
var4   2      8  15      5

我想在这些计数上使用来自 Epitools 库的oddsratio(),我如何将优势比以及上限和下限保存为 3 个新列?我希望 example$odds、example$upper 和 example$lower 存在于我的数据框中。

我对 apply() 和 and by() 有点搞砸了,但似乎无法弄清楚。使用 apply 它将行的结构从数据框更改为矩阵,并且在函数内设置列值超出了函数的范围。也许列表对象比数据框更好地服务整个事情?最后,我希望获得给定变量名称的所有信息(计数、统计信息等),每列中都有一个变量。

【问题讨论】:

  • 您好近视3,能否请edit您的问题提供您的预期输出?

标签: r


【解决方案1】:

也许这就是你要找的东西?

example <- cbind(example,
                 t(apply(example,1,function(x){
                          oddsratio(as.table(rbind(x[1:2],x[3:4])))$measure[2,]
                         }
                   )))
example
     A_x A_notx B_x B_notx   estimate      lower     upper
var1   5      5  10     10 0.99999998 0.20537812 4.8690679
var2   4      6  10     10 0.68116864 0.13043731 3.2586139
var3   3      7   5     15 1.28836297 0.20019246 7.2563905
var4   2      8  15      5 0.09603445 0.01039156 0.5446693

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2022-01-25
    • 2019-03-29
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多