Фильтрация данных по слову в строке в R dataf - PullRequest
1 голос
/ 17 января 2020

У меня есть кадр данных, который необходимо очистить, чтобы включить переменную обработки (столбец). В настоящее время информация хранится в переменной plant, но мне нужен ее собственный столбец. Я попробовал фильтр в моей трубе, но пока не повезло. Две обработки должны быть Control и Covered Доступ к данным здесь

library (tidyverse)
setwd("/Users/israel/Desktop/Ecology Paper")
raw.data<- read.csv ("Complete Dataset_01_17_20.csv", header = TRUE)

flowers<- raw.data %>% select (1,3:35, 100:115) %>% 
  mutate_all(funs(replace_na(., 0))) %>%
  group_by(location.ID, Year) %>% 
  gather (key= plant, value=count, -location.ID, -Year) %>% 
  group_by(location.ID, Year, as.factor(plant))  %>% filter (contains(Control))

1 Ответ

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

Если мы пытаемся фильтровать по «растению», используйте str_detect (или grepl из base R) в столбце «растение»

library(dplyr)
library(tidyr)
library(stringr)
raw.data %>% 
   select (1,3:35, 100:115) %>% 
   mutate_if(is.numeric, replace_na, 0)  %>%
  pivot_longer(cols = -c(location.ID, Year), names_to ='plant',
            values_to = 'count') %>%       
  filter(str_detect(plant, 'Control')) %>%
  group_by(location.ID, Year)

Шаг group_by непонятно. Если мы хотим filter any «Контроль», тогда имеем group_by перед filter и оберните с any т.е. any(str_detect(plant, 'Control'))

...