Сдвиг значений в столбце в зависимости от следующего значения и заполнение пустых записей - PullRequest
1 голос
/ 29 апреля 2020

У меня проблема с обработкой данных, я не знаю, как ее решить. У меня есть датафрейм, в котором строки в одном из столбцов сдвинуты вверх, и этот столбец заполнен не полностью. Мне нужно сдвинуть строки вниз и заполнить количество строк X, в зависимости от того, сколько данных в других столбцах.

РЕДАКТИРОВАТЬ : Я изменил способ отображения данных. Раньше я вставлял таблицу уценок, что приводило людей к ошибке. Я прошу прощения за это. Данные, с которыми я имею дело, выглядят следующим образом:

code    IdGene  Type    COGgene PosLeft postRight   Strand  Function
1
    1075082 CDS ROG0189 93  710 +   NA
8
    1075089 CDS COG0226 5632    6741    +   [P] ABC-type phosphate transport system, periplasmic component
    1075103 CDS NA  6796    7869    +   NA
9
    1075105 CDS NA  8075    8923    +   NA
    1075096 CDS ROG0189 8983    10149   +   NA
    1071820 CDS NA  10181   10723   +   NA
10
    1071880 CDS COG0642 10893   13316   +   [T] Signal transduction histidine kinase
    1072052 CDS COG2204 13288   14586   +   [T] Response regulator containing CheY-like receiver, AAA-type
12
    1075092 CDS NA  15525   16472   +   NA
13
    1075087 CDS NA  16655   17371   +   NA
    1074837 CDS NA  17383   17703   +   NA
    1071956 CDS NA  17710   18168   +   NA
14
    1071684 CDS NA  18251   18919   -   NA
15
    1075519 CDS ROG5478 19044   19334   +   NA
27
    1075067 CDS ROG8331 35989   36417   +   NA
    1075056 CDS COG2244 36478   38019   +   [R] Membrane protein involved in the export
    1075546 CDS COG1035 38016   39218   +   [C] Coenzyme F420-reducing hydrogenase, beta subunit
    1074004 CDS ROG1263 39215   40375   +   NA
    1075083 CDS COG1701 40406   40582   +   [S] Uncharacterized protein conserved in archaea
    1075068 CDS COG0463 40593   41537   +   [M] Glycosyltransferases involved in cell wall biogenesis
    1075064 CDS ROG2632 41534   42700   +   NA
    1075066 CDS COG0463 42724   43656   +   [M] Glycosyltransferases involved in cell wall biogenesis
    1075069 CDS COG1215 43671   44066   +   [M] Glycosyltransferases, probably involved in cell wall

И мне нужно преобразовать их в это:

code    IdGene  Type    COGgene PosLeft postRight   Strand  Function
1   1075082 CDS ROG0189 93  710 +   NA
8   1075089 CDS COG0226 5632    6741    +   [P] ABC-type phosphate transport system, periplasmic component
8   1075103 CDS NA  6796    7869    +   NA
9   1075105 CDS NA  8075    8923    +   NA
9   1075096 CDS ROG0189 8983    10149   +   NA
9   1071820 CDS NA  10181   10723   +   NA
10  1071880 CDS COG0642 10893   13316   +   [T] Signal transduction histidine kinase
10  1072052 CDS COG2204 13288   14586   +   [T] Response regulator containing CheY-like receiver, AAA-type
12  1075092 CDS NA  15525   16472   +   NA
13  1075087 CDS NA  16655   17371   +   NA
13  1074837 CDS NA  17383   17703   +   NA
13  1071956 CDS NA  17710   18168   +   NA
14  1071684 CDS NA  18251   18919   -   NA
15  1075519 CDS ROG5478 19044   19334   +   NA
27  1075067 CDS ROG8331 35989   36417   +   NA
27  1075056 CDS COG2244 36478   38019   +   [R] Membrane protein involved in the export
27  1075546 CDS COG1035 38016   39218   +   [C] Coenzyme F420-reducing hydrogenase, beta subunit
27  1074004 CDS ROG1263 39215   40375   +   NA
27  1075083 CDS COG1701 40406   40582   +   [S] Uncharacterized protein conserved in archaea
27  1075068 CDS COG0463 40593   41537   +   [M] Glycosyltransferases involved in cell wall biogenesis
27  1075064 CDS ROG2632 41534   42700   +   NA
27  1075066 CDS COG0463 42724   43656   +   [M] Glycosyltransferases involved in cell wall biogenesis
27  1075069 CDS COG1215 43671   44066   +   [M] Glycosyltransferases, probably involved in cell wall

Любые указатели идей о том, как решить эту проблему, были бы великолепны. Идеально в R, но awk или другие тоже хорошо.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

Если у вас все в порядке с форматированием вывода (имеется в виду пробелы столбцов), тогда вы можете попробовать следовать в awk, также учитывая, что вы читаете данные из файла Input_file.

awk '
BEGIN{
  OFS="\t"
}
FNR==1 || FNR==2{
  print
  next
}
$2~/[0-9]+/{
  value=$2
  next
}
{
  $2=value"    | "}
1
'  Input_file
1 голос
/ 29 апреля 2020

Этот пользователь дает ожидаемый результат:

awk -F '|' '1*$2{id=$2;next}NR<3||sub(/\s+/,id)' input

Если f содержит ваши входные данные:

$ awk -F '|' '1*$2{id=$2;next}NR<3||sub(/\s+/,id)' f
| code | IdGene  | Type | COGgene | PosLeft | postRight | Strand | Function |
|------|---------|------|---------|---------|-----------|--------|----------|
| 1    | 1075082 | CDS  | ROG0189 | 93      | 710       | +      | NA       |
| 2    | 1075099 | CDS  | NA      | 783     | 1778      | +      | NA       |
| 3    | 1073305 | CDS  | NA      | 1872    | 2648      | +      | NA       |
| 4    | 1075537 | CDS  | NA      | 2783    | 3451      | +      | NA       |
| 4    | 1074931 | CDS  | COG0186 | 3460    | 3996      | +      | KO       |
| 5    | 1075097 | CDS  | NA      | 4088    | 4534      | +      | NA       |
| 5    | 1074010 | CDS  | NA      | 4457    | 4849      | -      | NA       |
| 5    | 1075093 | CDS  | ROG5695 | 4958    | 5503      | +      | NA       |
| 5    | 1075089 | CDS  | COG0226 | 5632    | 6741      | +      | KO       |
| 5    | 1075103 | CDS  | NA      | 6796    | 7869      | +      | NA       |
| 5    | 1075105 | CDS  | NA      | 8075    | 8923      | +      | NA       |
| 5    | 1075096 | CDS  | ROG0189 | 8983    | 10149     | +      | NA       |
| 5    | 1071820 | CDS  | NA      | 10181   | 10723     | +      | NA       |

обновление для изменения ввода:

Эта однострочная строка будет работать для нового ввода и сохранит формат вывода:

awk  'NF<2{id=$1;next}NR==1||sub("\\s{"length(id)"}",id)' file

Снова протестируйте входные данные в f:

$ awk  'NF<2{id=$1;next}NR==1||sub("\\s{"length(id)"}",id)' f
code    IdGene  Type    COGgene PosLeft postRight   Strand  Function
1   1075082 CDS ROG0189 93  710 +   NA
8   1075089 CDS COG0226 5632    6741    +   [P] ABC-type phosphate transport system, periplasmic component
8   1075103 CDS NA  6796    7869    +   NA
9   1075105 CDS NA  8075    8923    +   NA
9   1075096 CDS ROG0189 8983    10149   +   NA
9   1071820 CDS NA  10181   10723   +   NA
10  1071880 CDS COG0642 10893   13316   +   [T] Signal transduction histidine kinase
10  1072052 CDS COG2204 13288   14586   +   [T] Response regulator containing CheY-like receiver, AAA-type
12  1075092 CDS NA  15525   16472   +   NA
13  1075087 CDS NA  16655   17371   +   NA
13  1074837 CDS NA  17383   17703   +   NA
13  1071956 CDS NA  17710   18168   +   NA
14  1071684 CDS NA  18251   18919   -   NA
15  1075519 CDS ROG5478 19044   19334   +   NA
27  1075067 CDS ROG8331 35989   36417   +   NA
27  1075056 CDS COG2244 36478   38019   +   [R] Membrane protein involved in the export
27  1075546 CDS COG1035 38016   39218   +   [C] Coenzyme F420-reducing hydrogenase, beta subunit
27  1074004 CDS ROG1263 39215   40375   +   NA
27  1075083 CDS COG1701 40406   40582   +   [S] Uncharacterized protein conserved in archaea
27  1075068 CDS COG0463 40593   41537   +   [M] Glycosyltransferases involved in cell wall biogenesis
27  1075064 CDS ROG2632 41534   42700   +   NA
27  1075066 CDS COG0463 42724   43656   +   [M] Glycosyltransferases involved in cell wall biogenesis
27  1075069 CDS COG1215 43671   44066   +   [M] Glycosyltransferases, probably involved in cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...