Как поднастроить один фрейм данных и сделать его равным соответствующим фреймам данных в r? - PullRequest
0 голосов
/ 04 октября 2019

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

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

Вот первый набор данных:

flowering <- data.frame(plot = c(101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101),
                   plant=c(1,
                           1,
                           1,
                           1,
                           1,
                           1,
                           1,
                           1,
                           1,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5),
                   leaf.number=c(1,2,3,4,5,6,7,8,9,
                                 1,2,3,4,5,6,7,8,9,10,11,
                                 1,2,3,4,5,6,7,8,9,10,11,
                                 1,2,3,4,5,6,7,8,9,10,
                                 1,2,3,4,5,6,7,8,9,10,11),
                   score = c(100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             30,
                             80,
                             0,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             75,
                             90,
                             0,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             10,
                             0,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             35,
                             0))

Подмножество набора данных:

flowering_subset <- subset(data, score == 100)

Теперь мы подгруппировали данные. Теперь я хочу, чтобы листья в 'flowering_data' использовались в других наборах данных. Только эти листья должны быть использованы. Следует отметить, что листья были тщательно отмечены, поэтому они были точными, которые я взял в последующих измерениях.

Вот пример моего следующего набора данных:

dough <- data.frame(plot = c(101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101,
                            101),
                   plant=c(1,
                           1,
                           1,
                           1,
                           1,
                           1,
                           1,
                           1,
                           1,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           2,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           3,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           4,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5,
                           5),
                   leaf.number=c(1,2,3,4,5,6,7,8,9,
                                 1,2,3,4,5,6,7,8,9,10,11,
                                 1,2,3,4,5,6,7,8,9,10,11,
                                 1,2,3,4,5,6,7,8,9,10,
                                 1,2,3,4,5,6,7,8,9,10,11),
                   score = c(100,
                             100,
                             100,
                             90,
                             100,
                             100,
                             100,
                             90,
                             100,
                             100,
                             90,
                             100,
                             100,
                             90,
                             80,
                             80,
                             80,
                             30,
                             80,
                             0,
                             100,
                             100,
                             100,
                             100,
                             100,
                             100,
                             80,
                             80,
                             75,
                             90,
                             0,
                             100,
                             100,
                             100,
                             100,
                             80,
                             80,
                             80,
                             80,
                             10,
                             0,
                             100,
                             100,
                             100,
                             100,
                             100,
                             90,
                             90,
                             90,
                             90,
                             35,
                             0))

Я думал, что dplyr илиТидир будет работать, но если есть другой вариант, это было бы здорово.

Заранее спасибо всем!

1 Ответ

1 голос
/ 05 октября 2019

С помощью dplyr вы можете сначала отфильтровать нужные листы, а затем соединить другие наборы данных с предварительно отфильтрованным первым набором данных:

library(dplyr)

flowering %>%
  filter(score == 100) %>%
  inner_join(
    .,
    dough,
    by = c("plot", "plant", "leaf.number"),
    suffix = c("_flowering", "_dough")
  )

   plot plant leaf.number score_flowering score_dough
1   101     1           1             100         100
2   101     1           2             100         100
3   101     1           3             100         100
4   101     1           4             100          90
5   101     1           5             100         100
6   101     1           6             100         100
7   101     1           7             100         100
8   101     1           8             100          90
9   101     1           9             100         100
10  101     2           1             100         100
...
...