R 在数据帧上进行计算(将每个单元格除以数据帧中的最后一行,然后计算内容)
我在数据框中进行计算时遇到问题。 我有一个等式: Q=(FL_18/控制(FL_18列))*(控制/Abs_18(Abs_18列)) 我的数据: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
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,但将来可能会更多