繁体   English   中英

将列中的 Na 替换为 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM