【发布时间】:2016-10-13 04:53:32
【问题描述】:
我进行了很多搜索,但找不到解决方案...我认为对你们中的许多人来说这很容易...但对我来说不是。
df <- data.frame(site = c("11", " 4 , 111", "3,1 ", "4,11111 "))
> df
site
1 11
2 4 , 111
3 3,1
4 4,11111
我有一列,其中多个站点代码可能用逗号分隔(不是可能出现的随机空格)。我正在尝试查找与感兴趣的字符串站点编号匹配的行。
搜索站点为 11 或 3 'c(1,3)' 匹配的行的结果应返回:
[1] 1 0 1 0
我似乎无法解决这个问题......我想答案将包括
temp <- strsplit(df$site, ",")
,但我似乎无法理解如何在该步骤之后在列表上应用函数...我会做一个
grepl(c("^11$", "^3$"), temp)
但这不起作用。
【问题讨论】:
-
1 和 0 代表什么?它们只是“是”和“否”还是应该给出每个字符串中的匹配数?
-
有点悠闲的版本:
library(tidyverse) ; df %>% group_by(row = row_number()) %>% separate_rows(site, sep = ',', convert = TRUE) %>% summarise(result = as.integer(any(site == 11 | site == 3)))
标签: r data-manipulation grepl