R 如何编写一个循环,在两列中查找条件,然后在数据帧的第三列中添加值?
我有一个有四列的数据框,我需要找到一种方法来对第三列中的值求和。仅当前两列中的数字不同时。我能想到的唯一方法就是做一个R 如何编写一个循环,在两列中查找条件,然后在数据帧的第三列中添加值?,r,genetics,R,Genetics,我有一个有四列的数据框,我需要找到一种方法来对第三列中的值求和。仅当前两列中的数字不同时。我能想到的唯一方法就是做一个If循环?这是可以做到的还是有更好的方法 Genotype summary` Dnov1a Dnov1b Freq rel_geno_freq 1 220 220 1 0.003367003 7 220 224 4 0.013468013 8 224 224 8 0.026936027 13 22
If
循环?这是可以做到的还是有更好的方法
Genotype summary`
Dnov1a Dnov1b Freq rel_geno_freq
1 220 220 1 0.003367003
7 220 224 4 0.013468013
8 224 224 8 0.026936027
13 220 228 14 0.047138047
这是数据的一部分作为示例,我需要对第7行和第13行的第三列Freq
求和,因为它们不同。data$new=data$Dnov1a=数据$Dnov1b
data$new = data$Dnov1a!=data$Dnov1b
data
Dnov1a Dnov1b Freq rel_geno_freq new
<int> <int> <int> <dbl> <lgl>
1 220 220 1 0.00337 TRUE
2 220 224 4 0.0135 FALSE
3 224 224 8 0.0269 TRUE
4 220 228 14 0.0471 FALSE
sum(data$Freq[data$new])
28
数据
Dnov1a Dnov1b频率相关基因频率新
1 220 1 0.00337正确
222022440.0135假
3224224 8 0.0269正确
4 220 228 14 0.0471错误
总和(数据$Freq[数据$new])
28
这就是您要找的吗?data$new=data$Dnov1a=数据$Dnov1b
数据
Dnov1a Dnov1b频率相关基因频率新
1 220 1 0.00337正确
222022440.0135假
3224224 8 0.0269正确
4 220 228 14 0.0471错误
总和(数据$Freq[数据$new])
28
这就是你要找的吗?这里有一个
tidyverse
方法:
library(tidyverse)
data <- tribble(
~Dnov1a, ~Dnov1b, ~Freq, ~rel_geno_freq,
220, 220, 1, 0.003367003,
220, 224, 4, 0.013468013,
224, 224, 8, 0.026936027,
220, 228, 14, 0.047138047)
data %>%
mutate(filter_column = if_else(Dnov1a != Dnov1b, TRUE, FALSE)) %>%
filter(filter_column == TRUE) %>%
summarise(Total = sum(Freq))
# A tibble: 1 x 1
Total
<dbl>
1 18
库(tidyverse)
数据%
变异(筛选列=if_-else(Dnov1a!=Dnov1b,真,假))%>%
筛选器(筛选器_列==TRUE)%>%
总结(总计=总和(频率))
#一个tibble:1x1
全部的
1 18
这里有一个tidyverse
的方法:
library(tidyverse)
data <- tribble(
~Dnov1a, ~Dnov1b, ~Freq, ~rel_geno_freq,
220, 220, 1, 0.003367003,
220, 224, 4, 0.013468013,
224, 224, 8, 0.026936027,
220, 228, 14, 0.047138047)
data %>%
mutate(filter_column = if_else(Dnov1a != Dnov1b, TRUE, FALSE)) %>%
filter(filter_column == TRUE) %>%
summarise(Total = sum(Freq))
# A tibble: 1 x 1
Total
<dbl>
1 18
库(tidyverse)
数据%
变异(筛选列=if_-else(Dnov1a!=Dnov1b,真,假))%>%
筛选器(筛选器_列==TRUE)%>%
总结(总计=总和(频率))
#一个tibble:1x1
全部的
1 18
对预期输出不是很清楚。你能分享一下预期的产出吗?对预期产出不是很清楚。你能分享一下预期的产出吗?是的,大致是这样的。虽然,我在我的帖子里犯了一个错误。我指的是那些不同的。只是为更改了=
=代码>沿着这条线的东西,是的。虽然,我在我的帖子里犯了一个错误。我指的是那些不同的。只是为更改了=
=代码>