首页 > 解决方案 > 循环变异R中的多列

问题描述

我对使用 R 比较陌生,我需要一些帮助来创建一个循环来改变多个列。我正在尝试使用宽格式数据框创建一个对每个样本进行计算的列。我的数据框看起来与此类似:

df<- data.frame("count1" = c(1,2,3,4), "total1" = c(5,6,8,9), "count2" = c(4,3,2,1), "total2" = c(9,8,6,5))

其中 count1 和 total 1 属于同一个样本,我想使用公式为每个样本改变一列

df <- df %>% mutate(percent1 = count1/total1)

我正在尝试创建一个循环来自动改变这些列,因为我有一百多个样本/列。我不确定我是否必须先融化数据框,但由于数据比上面描述的更复杂,这是不希望的。我尝试了多种方法来创建循环,例如

for (i in 1:nrow(samples)){
df <- df %>% mutate(paste("percent", i) = df$(paste("count"), i) / df$(paste"total", i)
}

但由于它不起作用,我非常感谢任何帮助

标签: rdplyr

解决方案


如果不使用dplyr,这可能更容易,因为:

for (i in 1:nrow(samples)){
  df[[paste0("percent", i)]] <- df[[paste0("count", i)]] / df[[paste0("total", i)]]
}

推荐阅读