сплетение таблицы подарков / отсутствий в длинную форму в г - PullRequest
0 голосов
/ 22 января 2020

Я новичок в R (и думаю, что всегда буду). Я пытаюсь привести таблицу в соответствие с этим кодом (только очень короткий пример):

PlotA<-c(0,1,0,1,0,1,0,1,0,1)
PlotB<-c(0,0,1,1,0,0,1,1,0,0)
PlotC<-c(0,0,0,0,1,1,1,1,0,0)
PlotD<-c(0,0,0,0,0,0,0,0,1,1)

DF<-as.data.frame(cbind(PlotA,PlotB,PlotC,PlotD))
row.names(DF)<-paste0("Species",LETTERS[seq( from = 1, to = 10 )])

К этому (пример только двух графиков из четырех):

SpeciesRepeat<-c("SpecisB","SpecisD","SpecisF","SpecisH","SpecisJ","SpecisC","SpecisD","SpecisG","SpecisH")
PlotRepeat<-c(rep("PlotA",length(PlotA [PlotA==1])), rep("PlotB",length(PlotB [PlotB==1])))
DesierdResDF<-cbind(SpeciesRepeat,PlotRepeat)

где каждое наблюдение вида на участке представлено в строке (obs). Tidyverse и Basi c R код будут оценены по достоинству

Спасибо, Идан

1 Ответ

1 голос
/ 22 января 2020

Вот подход с tidyverse. Сначала мы добавляем новый столбец для имен строк, получаем данные в длинном формате и выбираем строки, где value = 1.

library(tidyverse)
DF %>%
  rownames_to_column('SpeciesRepeat') %>%
  pivot_longer(cols = starts_with("Plot"), names_to = 'PlotRepeat') %>%
  filter(value == 1) %>%
  select(-value) 

# A tibble: 15 x 2
#   SpeciesRepeat PlotRepeat
#   <chr>         <chr>     
# 1 SpeciesB      PlotA     
# 2 SpeciesC      PlotB     
# 3 SpeciesD      PlotA     
# 4 SpeciesD      PlotB     
# 5 SpeciesE      PlotC     
# 6 SpeciesF      PlotA     
# 7 SpeciesF      PlotC     
# 8 SpeciesG      PlotB     
# 9 SpeciesG      PlotC     
#10 SpeciesH      PlotA     
#11 SpeciesH      PlotB     
#12 SpeciesH      PlotC     
#13 SpeciesI      PlotD     
#14 SpeciesJ      PlotA     
#15 SpeciesJ      PlotD     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...