【发布时间】:2020-05-28 22:58:37
【问题描述】:
我需要 R 中的帮助并根据模式处理列边距信息。 为了不理解这里举个例子:
Groups Names COL1 COL2 COL3
1 G1 KB640596.1_2-BICs_-__SP1 <NA> 10 30
2 G1 KB640596.1_32-33_-__SP1 YP_98 NA NA
3 G1 KB640596.1_32-33_-__SP1 YP_99 NA NA
4 G1 KB640596.1_32-33_-__SP1 YP_100 NA NA
5 G1 KB640596.1_32-33_-__SP1 YP_101 NA NA
6 G1 KB640588.1_2-BICs_-__SP1 <NA> 89 28
7 G1 KB640596.1_38-39_-__SP1 YP_102 NA NA
8 G1 KB640588.1_38-39_-__SP1 YP_103 NA NA
9 G1 KB640596.1_21-90_-__SP1 YP_102 NA NA
10 G1 KB640588.1_78-32_-__SP1 YP_102 NA NA
11 G1 KB640596.1_89-90_-__SP2 YP_104 90 76
12 G2 LO640571_89-90_-__SP3 YP_100 30 90
13 G2 LO640571_89-90_-__SP3 YP_101 40 10
14 G3 LO640571_89-90_-__SP3 YP_2 29 29
15 G3 LO640571_10-20_-__SP3 YP_2 29 29
16 G3 LO640571_09-99_-__SP3 YP_2 29 29
从这个 df 我想为每个组和每个具有-BICs 模式的名称填充其COL2 COL3 values and remplace them to the other Names that
have the same content part before the first'_'`
例如:
在G1 中,只有KB640596.1_2-BICs_-__SP1 有-BICs 模式,
然后我提取第一个 '_' 模式之前的内容并得到:KB640596.1
KB640596.1 也存在于其他名称中,然后我将COL2 和COL3 值(分别为10 和30)添加到它们并得到:
Groups Names COL1 COL2 COL3
G1 KB640596.1_2-BICs_-__SP1 NA 10 30
G1 KB640596.1_2-BICs_-__SP1 YP_98 10 30
G1 KB640596.1_2-BICs_-__SP1 YP_99 10 30
G1 KB640596.1_2-BICs_-__SP1 YP_100 10 30
G1 KB640596.1_2-BICs_-__SP1 YP_101 10 30
G1 KB640588.1_2-BICs_-__SP1 NA 89 28
G1 KB640596.1_2-BICs_-__SP1 YP_102 10 30
G1 KB640588.1_2-BICs_-__SP1 YP_103 89 28
G1 KB640596.1_2-BICs_-__SP1 YP_102 10 30
G1 KB640588.1_2-BICs_-__SP1 YP_102 89 28
G1 KB640596.1_2-BICs_-__SP1 YP_104 90 76
G2 LO640571_89-90_-__SP3 YP_100 30 90
G2 LO640571_89-90_-__SP3 YP_101 40 10
G3 LO640571_89-90_-__SP3 YP_2 29 29
G3 LO640571_10-20_-__SP3 YP_2 29 29
G3 LO640571_09-99_-__SP3 YP_2 29 29
如果有人有想法,那就太好了
数据
structure(list(Groups = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L), .Label = c("G1", "G2", "G3"
), class = "factor"), Names = structure(c(4L, 6L, 6L, 6L, 6L,
1L, 7L, 2L, 5L, 3L, 8L, 11L, 11L, 11L, 10L, 9L), .Label = c("KB640588.1_2-BICs_-__SP1",
"KB640588.1_38-39_-__SP1", "KB640588.1_78-32_-__SP1", "KB640596.1_2-BICs_-__SP1",
"KB640596.1_21-90_-__SP1", "KB640596.1_32-33_-__SP1", "KB640596.1_38-39_-__SP1",
"KB640596.1_89-90_-__SP2", "LO640571_09-99_-__SP3", "LO640571_10-20_-__SP3",
"LO640571_89-90_-__SP3"), class = "factor"), COL1 = structure(c(NA,
7L, 8L, 1L, 2L, NA, 3L, 4L, 3L, 3L, 5L, 1L, 2L, 6L, 6L, 6L), .Label = c("YP_100",
"YP_101", "YP_102", "YP_103", "YP_104", "YP_2", "YP_98", "YP_99"
), class = "factor"), COL2 = c(10L, NA, NA, NA, NA, 89L, NA,
NA, NA, NA, 90L, 30L, 40L, 29L, 29L, 29L), COL3 = c(30L, NA,
NA, NA, NA, 28L, NA, NA, NA, NA, 76L, 90L, 10L, 29L, 29L, 29L
)), class = "data.frame", row.names = c(NA, -16L))
【问题讨论】: