好的,所以我无法想象我的生活,我想根据部分字符串匹配过滤我的数据。这是我的数据,我只是显示我要过滤的列,但整个集合中有更多行。我只想显示以“CAO”开头的行 - 这在查看器中很容易实现
dataviewer image:
基本上我想要R“代码”来重现这个确切的结果。我尝试过像这样使用grepl
filter(longdata, grepl("^CAO",longdata[,1]))
我尝试过使用子集
subset(longdata,longdata[,1]=="^CAO")
我已尝试用grepl进行子集,无论我做什么,我都无法弄明白。我是R的新手,请尝试彻底解释。
答案 0 :(得分:2)
grepl的第二个参数在您的第一个代码中未被识别
library(tidyverse) #in this case access to dplyr and to tibble´s data_frame() function which preserves the spaces in the column names
longdata <- data_frame(`Issue ID`=c("CAO-2017-20", "CAO-2017-20", "CAO-2017-20", "AO-2017-20", "CA-2017-20"))
longdata %>% filter(grepl("CAO", `Issue ID`)) #patern "^CAO" also works
%>%
是一个管道运算符,可以进一步传递先前操作的结果,此处由dplyr
加载。
基本上我所做的是加载tidyverse
套包(详见tidyverse here)。感兴趣的是tibble
和dplyr
。
然后我使用tibble
函数data_frame()
创建了一个示例数据框
然后我应用了你建议的调整后的函数,即
filter(longdata, grepl("^CAO",`Issue ID`))
它的管道形式相同:
longdata %>% filter(grepl("CAO", `Issue ID`))