我想使用每行两列的值计算数据框中每一行的比率。数据是来自成对肌肉的解剖学测量值,我需要计算一个肌肉的测量值与另一个肌肉的测量值的比率。每行是一个单独的样本,并且所讨论的两列中的每一列都具有对2个肌肉中的一个的测量。两个肌肉中哪一个是最大的,因个体(行)而异,所以我需要弄清楚如何编写一个脚本,它总是选择较小的值,可能在任一列中,对于分子,并且总是选择较大的值,对于分母,也可以在任一列中,而不是简单地将一列的所有值除以另一列的值。这可能很简单,但我对编码还不是很好。
这不起作用: 比率< - DF $ 1 / DF $ 2
我认为我需要的东西会循环遍历每一行,如下所示:
比率< - which.min(c(DF $ 1,DF $ 2))/ which.max(c(DF $ 1,DF $ 2))
非常感谢任何帮助!
答案 0 :(得分:0)
假设您只处理正值,您可以考虑这样的事情:
# example data:
df <- data.frame(x = abs(rnorm(100)), y = abs(rnorm(100)))
# sorting the two columns so that the smaller always appears in the first
# column:
df_sorted <- t(apply(df,1, sort))
# dividing the first col. by the second col.
ratio <- df_sorted[,1]/df_sorted[,2]
或者,或者:
ifelse(df[,1] > df[,2], df[,2]/df[,1], df[,1]/df[,2])