【问题标题】:Filtering data based on word in string in R dataf基于R dataf中字符串中的单词过滤数据
【发布时间】:2020-05-04 14:15:36
【问题描述】:

我有一个需要清理以包含处理变量(列)的数据框。该信息当前存储在plant 变量中,但我需要它是它自己的列。我试过在我的管道中过滤,但还没有运气。这两个处理应该是ControlCovered Access Data Here

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))

【问题讨论】:

  • 你能提供一些说明性的可重复数据吗?

标签: r filter multiple-columns tidyverse dplyr


【解决方案1】:

如果我们尝试基于“植物”进行过滤,请在“植物”列上使用str_detect(或base R 中的grepl

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 'Control' 然后在 filter 之前加上 group_by 并用 any 包裹,即 any(str_detect(plant, 'Control'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2013-07-12
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多