grep и / или собрать путаницу данных - PullRequest
0 голосов
/ 06 мая 2019

Этот вопрос довольно прост, но мне трудно его решить.

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

У меня есть фрейм данных (df) с различными названиями видов бактерий в заголовке и значениями для каждой бактерии, найденными ниже каждого вида.

Я хотел бы переставить свой фрейм данных ниже (df), добавить столбец с именем «разновидности» и второй столбец с именем «значение» и заполнить их соответственно.

В определенные дни несколько видов присутствовали в один и тот же день, а это означает, что в окончательном наборе данных я должен повторять «дни» несколько раз, если есть несколько точек данных с этого дня.(см. sample_finished_data)

    df <- read.table("https://pastebin.com/raw/Myhctf7b", header=T, sep="\t")

Вот пример того, что я хотел бы сделать:

    sample_finished_tabled <- read.table("https://pastebin.com/raw/5vHwA5ar",header = T,sep = "\t")

Я могу представить, что это то, что я бы использовал grep () или набор() но мне нужна помощь в создании кода.

Спасибо как всегда

Ответы [ 2 ]

2 голосов
/ 06 мая 2019

Мы можем использовать gather

tidyr::gather(df, species, value, -(1:5), na.rm = TRUE) 

#           ID antibiotic day treatment Agarplate                    species value
#1  Te100.1_d0         Te   0   Te100.1     Tryso    Achromobacter.insolitus   1.0
#2  Te100.1_d0         Te   1   Te100.1       BHI    Achromobacter.insolitus   2.4
#4  Te100.1_d0         Te   3   Te100.1     MRS30    Achromobacter.insolitus   3.0
#5  Te100.1_d0         Te   4   Te100.1       Sab    Achromobacter.insolitus   6.0
#7  Te100.2_d0         Te   6   Te100.2       BHI    Achromobacter.insolitus   7.0
#20 Te100.1_d0         Te   3   Te100.1     MRS30        Acidovorax.defluvii   1.0
#22 Te100.2_d0         Te   5   Te100.2     Tryso        Acidovorax.defluvii   6.0
#30 Te100.2_d0         Te   5   Te100.2     Tryso     Acidovorax.delafieldii   6.0
#31 Te100.2_d0         Te   6   Te100.2       BHI     Acidovorax.delafieldii   7.0
#35 Te100.1_d0         Te   2   Te100.1      Blut Acinetobacter.haemolyticus   5.0
#42 Te100.1_d0         Te   1   Te100.1       BHI    Acinetobacter.johnsonii   2.0
1 голос
/ 06 мая 2019

Мы можем использовать melt из data.table

library(data.table)
melt(setDT(df), id.var = 1:5, variable.name = "species", na.rm = TRUE)
#           ID antibiotic day treatment Agarplate                    species value
# 1: Te100.1_d0         Te   0   Te100.1     Tryso    Achromobacter.insolitus   1.0
# 2: Te100.1_d0         Te   1   Te100.1       BHI    Achromobacter.insolitus   2.4
# 3: Te100.1_d0         Te   3   Te100.1     MRS30    Achromobacter.insolitus   3.0
# 4: Te100.1_d0         Te   4   Te100.1       Sab    Achromobacter.insolitus   6.0
# 5: Te100.2_d0         Te   6   Te100.2       BHI    Achromobacter.insolitus   7.0
# 6: Te100.1_d0         Te   3   Te100.1     MRS30        Acidovorax.defluvii   1.0
# 7: Te100.2_d0         Te   5   Te100.2     Tryso        Acidovorax.defluvii   6.0
# 8: Te100.2_d0         Te   5   Te100.2     Tryso     Acidovorax.delafieldii   6.0
# 9: Te100.2_d0         Te   6   Te100.2       BHI     Acidovorax.delafieldii   7.0
#10: Te100.1_d0         Te   2   Te100.1      Blut Acinetobacter.haemolyticus   5.0
#11: Te100.1_d0         Te   1   Te100.1       BHI    Acinetobacter.johnsonii   2.0

ПРИМЕЧАНИЕ. Для этого

существует множество паролей
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...