Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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_Dataframe_Dplyr - Fatal编程技术网

R 在数据帧上进行计算(将每个单元格除以数据帧中的最后一行,然后计算内容)

R 在数据帧上进行计算(将每个单元格除以数据帧中的最后一行,然后计算内容),r,dataframe,dplyr,R,Dataframe,Dplyr,我在数据框中进行计算时遇到问题。 我有一个等式: Q=(FL_18/控制(FL_18列))*(控制/Abs_18(Abs_18列)) 我的数据: df <- structure(list(Layout = c("SM1_1", "SM1_2", "SM1_3", "SM1_4", "SM1_5", "Control"), Abs_18_mean = c(0.02753575, 0.04619625, 0.04429875, 0.0485425, 0.033855, 0.06229337

我在数据框中进行计算时遇到问题。 我有一个等式:

Q=(FL_18/控制(FL_18列))*(控制/Abs_18(Abs_18列))

我的数据:

df <- structure(list(Layout = c("SM1_1", "SM1_2", "SM1_3", "SM1_4", 
"SM1_5", "Control"), Abs_18_mean = c(0.02753575, 0.04619625, 
0.04429875, 0.0485425, 0.033855, 0.062293375), FL_18_mean = c(2815.5, 
3330.25, 3375.375, 4458.5, 4905.5, 769.75)), .Names = c("Layout", 
"Abs_18_mean", "FL_18_mean"), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))
df您可以尝试:

df %>% 
  group_by(Layout) %>% 
  mutate(Q=.$FL_18_mean[6]/FL_18_mean*Abs_18_mean/.$Abs_18_mean[6])
  # or a more general solution:
  # mutate(Q=.$FL_18_mean[.$Layout == "Control"]/FL_18_mean*Abs_18_mean/.$Abs_18_mean[.$Layout == "Control"])
# A tibble: 6 x 4
# Groups:   Layout [6]
   Layout Abs_18_mean FL_18_mean          Q
    <chr>       <dbl>      <dbl>      <dbl>
1   SM1_1  0.02753575   2815.500 0.12085071
2   SM1_2  0.04619625   3330.250 0.17141062
3   SM1_3  0.04429875   3375.375 0.16217252
4   SM1_4  0.04854250   4458.500 0.13453683
5   SM1_5  0.03385500   4905.500 0.08528004
6 Control  0.06229337    769.750 1.00000000
df%>%
分组依据(布局)%>%
变异(Q=.$FL_18_均值[6]/FL_18_均值*Abs_18_均值/$Abs_18_均值[6])
#或者更一般的解决方案:
#变异(Q=.$FL_18_平均值[.$Layout==“控制”]/FL_18_平均值*Abs_18_平均值/$Abs_18_平均值[.$Layout==“控制”])
#一个tibble:6x4
#分组:布局[6]
布局Abs_18_平均值FL_18_平均值Q
1 SM1_1 0.02753575 2815.500 0.12085071
2 SM1_2 0.04619625 3330.250 0.17141062
3 SM1_3 0.04429875 3375.375 0.16217252
4 SM1_4 0.04854250 4458.500 0.13453683
5 SM1_5 0.03385500 4905.500 0.08528004
6控制0.06229337 769.750 1.00000000

那个数据集让我想起了一些相同的问题,不同的日子……你能澄清这部分等式吗?(控件/Abs_18(属于Abs_18列),因此在Abs_18列的最后一行中,控件需要除以其余列。>1行:控件/SM1\u 1>2行:控件/SM1\u 2是否只有这2列?(FL_18和Abs_18)?看起来不错!但问题是我将有更多的列,然后我将不得不手动指定它们。@magruc无法理解您的问题。因此,我有更多带有Abs和FL的列,而不仅仅是两列。那么公式将更加复杂。哦,但问题是什么?如果有十列要包括在内,我认为编写ca没有问题一次计算一次。是的,现在是8,但将来可能会更多