Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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,在下面的示例数据中,我想根据移植找到每个父项的值的差异,然后除以该列中所有值的平均值。具体来说,移植柱中外泻湖和内泻湖之间的亲本21的BM除以所有BM值的平均值(BM@外泻湖-BM@内泻湖)/平均值(BM)的差异是什么?然后,我如何将其应用于最后7列(BM、BWx.d…)中的每一列 df在df中的物种的类定义中有一个额外的,这会导致问题。一旦移除,这就可以了。 这是一个有趣的问题,因为您需要计算中的备用行(df$Transplant==“外部泻湖”和df$Transplant==“内部泻湖”)和

在下面的示例数据中,我想根据移植找到每个父项的值的差异,然后除以该列中所有值的平均值。具体来说,移植柱中外泻湖和内泻湖之间的亲本21的BM除以所有BM值的平均值(BM@外泻湖-BM@内泻湖)/平均值(BM)的差异是什么?然后,我如何将其应用于最后7列(BM、BWx.d…)中的每一列


df在df中的
物种
的类定义中有一个额外的
,这会导致问题。一旦移除,这就可以了。 这是一个有趣的问题,因为您需要计算中的备用行(
df$Transplant==“外部泻湖”
df$Transplant==“内部泻湖”
)和所有行(
mean(BM)
)的值。因此,通过
移植进行简单分组将不起作用。
我的想法是使用
pivot\u wide
tidyr
创建一个宽数据帧,使用
transport
列进行数据透视。这将为
的每个唯一值创建附加值列:

library(dplyr)
library(tidyr)

meanBM <- mean(df$BM)

df <- df %>%
  pivot_wider(names_from = Transplant,
              values_from = c("BM", "BWx.d", "LE", "GPSA", "RSA", "P_RSA", "Survival")
              )
随后的计算现在变得很容易,因为我们可以按行进行:
BM
Survival
的值现在位于同一行中

df <- df %>%
  mutate(new_col = abs(`BM_Outer Lagoon` - `BM_Inner Lagoon`)/meanBM)

这与您计算的结果相同。您可以轻松地将其扩展到其他列。

为什么不先尝试自己编写一些代码呢?您提供的数据有问题;我无法复制它。请检查我的错误-我以前的代码有输入错误。这应该可以工作-我有这个正在运行的abs(df$BM[df$Transplant==“Outer lagon”]-df$BM[df$Transplant==“interner lagon”])/mean(df$BM),但我不知道如何跨列应用它。您共享的
dput
给出了错误。我们不能用它。你能检查一下吗?我想带
lead
功能的方法也可以。谢谢!这正是我需要的。
> glimpse(df)
Observations: 2
Variables: 18
$ Parent                  <int> 21, 22
$ Origin                  <fct> Outer Lagoon, Outer Lagoon
$ Timepoint               <dbl> 3, 3
$ Species                 <fct> MCAP, MCAP
$ `BM_Inner Lagoon`       <dbl> 5.865888, 6.366555
$ `BM_Outer Lagoon`       <dbl> 7.181633, 6.413772
$ `BWx.d_Inner Lagoon`    <dbl> 0.5399106, 0.6011770
$ `BWx.d_Outer Lagoon`    <dbl> 0.6707900, 0.6634879
$ `LE_Inner Lagoon`       <dbl> 0.009864166, 0.010088708
$ `LE_Outer Lagoon`       <dbl> 0.007034995, 0.008510985
$ `GPSA_Inner Lagoon`     <dbl> 0.01782590, 0.02018589
$ `GPSA_Outer Lagoon`     <dbl> 0.03735000, 0.03343707
$ `RSA_Inner Lagoon`      <dbl> 0.005100527, 0.005893039
$ `RSA_Outer Lagoon`      <dbl> 0.007212994, 0.011174223
$ `P_RSA_Inner Lagoon`    <dbl> 3.616331, 3.590072
$ `P_RSA_Outer Lagoon`    <dbl> 5.516517, 2.994322
$ `Survival_Inner Lagoon` <dbl> 91.89189, 100.00000
$ `Survival_Outer Lagoon` <dbl> 100.0000, 97.2973
df <- df %>%
  mutate(new_col = abs(`BM_Outer Lagoon` - `BM_Inner Lagoon`)/meanBM)
> df$new_col
[1] 0.203771528 0.007312585