![](/img/trans.png)
[英]replace NA in a table with values in column with another table by conditions in R
[英]Replace Na in column with conditions in R
我有一个 dataframe 例如:
COL1 COL2 COL3
G1 SP1_1 1
G1 SP1_2 2
G1 SP1_3 NA
G2 SP1_4 1
G2 SP1_4 1
G2 SP2_3 NA
G3 SP1_2 1
G4 SP2_3 NA
G4 SP8_3 NA
G4 Species_3 NA
G5 SP9_2 NA
G5 SP9_2 NA
而且我想简单地将每个COL1 groups
中的NA
COL3
为一个数字,该数字是该组中最高数字之后的下一个数字。 组内重复的COL2
应具有相同的编号。
所以我应该得到:
COL1 COL2 COL3
G1 SP1_1 1
G1 SP1_2 2
G1 SP1_3 3
G2 SP1_4 1
G2 SP1_4 1
G2 SP2_3 2
G3 SP1_2 1
G4 SP2_3 1
G4 SP8_3 2
G4 Species_3 3
G5 SP9_2 1
G5 SP9_2 1
以下是数据:
structure(list(COL1 = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L,
4L, 4L, 4L, 5L, 5L), .Label = c("G1", "G2", "G3", "G4", "G5"), class = "factor"),
COL2 = structure(c(1L, 2L, 3L, 4L, 4L, 5L, 2L, 5L, 6L, 8L,
7L, 7L), .Label = c("SP1_1", "SP1_2", "SP1_3", "SP1_4", "SP2_3",
"SP8_3", "SP9_2", "Species_3"), class = "factor"), COL3 = c(1L,
2L, NA, 1L, 1L, NA, 1L, NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-12L))
编辑:问题澄清后重新制定。
假设 COL3 表示每个 COL1 内 COL1+COL2 的唯一组合的累积枚举,此方法计算 COL2 在 COL1 内更改的累积次数:
library(dplyr)
my_data %>%
arrange(COL1, COL2) %>%
group_by(COL1) %>%
mutate(COL3 = cumsum(COL2 != lag(COL2, default = ""))) %>%
ungroup()
# A tibble: 12 x 3
COL1 COL2 COL3
<fct> <fct> <int>
1 G1 SP1_1 1
2 G1 SP1_2 2
3 G1 SP1_3 3
4 G2 SP1_4 1
5 G2 SP1_4 1
6 G2 SP2_3 2
7 G3 SP1_2 1
8 G4 SP2_3 1
9 G4 SP8_3 2
10 G4 Species_3 3
11 G5 SP9_2 1
12 G5 SP9_2 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.