Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将数据帧中的多列除以相邻列_R - Fatal编程技术网

R 将数据帧中的多列除以相邻列

R 将数据帧中的多列除以相邻列,r,R,我有一个数据集,是在一个具有特定优势树型的地块中观察到的动物平均数量(对于树型,列名为H或B,对于地块,列名为数字)。它们与B列之前的所有H列交替排列,如下所示: Survey<-c(1,2,3) H1<-c(5,8,3) B1<-c(6,3,9) H2<-c(12,15,1) B2<-c(3,17,8) df<-as.data.frame(cbind(Survey,H1,B1,H2,B2)) 调查1)dplyr使用如下所示: library(dplyr)

我有一个数据集,是在一个具有特定优势树型的地块中观察到的动物平均数量(对于树型,列名为H或B,对于地块,列名为数字)。它们与B列之前的所有H列交替排列,如下所示:

Survey<-c(1,2,3)
H1<-c(5,8,3)
B1<-c(6,3,9)
H2<-c(12,15,1)
B2<-c(3,17,8)

df<-as.data.frame(cbind(Survey,H1,B1,H2,B2))
调查1)dplyr使用如下所示:

library(dplyr)

ix <- seq(2, ncol(df), 2)
df %>% mutate(across(ix) / across(ix+1))
2)基础R使用上面的ix:

replace(df, ix, df[ix] / df[ix+1])
给予:

  Survey        H1 B1        H2 B2
1      1 0.8333333  6 4.0000000  3
2      2 2.6666667  3 0.8823529 17
3      3 0.3333333  9 0.1250000  8
  Survey        H1 B1        H2 B2
1      1 0.8333333  6 4.0000000  3
2      2 2.6666667  3 0.8823529 17
3      3 0.3333333  9 0.1250000  8

谢谢这对样本数据集有效,但我的实际列标题相当长,包含多个Bs和Hs(例如mean_Carabids_MacLeish_4B(M)_2))。有没有一种方法可以在不依赖列标题中的字母的情况下完成相同的任务?另外,我很抱歉没有将其包含在示例中。我已将答案更改为使用列位置而不是名称。
df