我想在数据框中找到一个逗号并返回找到它的行。数据就像这个 r
通过将所有列粘贴在一起,您可以找到包含逗号的行:
虚拟数据集的示例:
df<-data.frame(Var=c("a,a","a","a","a,a","a"), Var2 = c("b","b,b","b","b","b"))
df2<-apply(df,1,paste,collapse="")
which(grepl(",",df2))
您可以添加标记找到逗号的行的列,然后筛选标记行的数据框。
data <- data %>%
mutate(flag = ifelse(str_detect(columnC, ",")|str_detect(columnD, ",")|str_detect(columnE, ","), 1, 0) %>%
filter(flag==1)
我们可以使用filter_all
的dplyr
:
library(dplyr)
df %>%
filter_all(any_vars(grepl(',', .)))
输出:
X1 X2 X3
1 1,2,3 a 2,3,4
2 2,3 b a
3 4 c 4
数据:
df <- data.frame(X1 = c("1,2,3", "2,3", "4"),
X2 = letters[1:3],
X3 = c("2,3,4", "a", "4"))
假设您的数据框存储在变量df
中。您可以使用stringr
包和apply
函数找到包含逗号的行:
df=cbind(1:4,c("oko","kokk","rk,ki","plok"),c("er,t","plo","oli","rte"))
library(stringr)
inds_row=which(apply(df,1,function(x){ifelse(sum(str_detect(x,','))>0,T,F)})==T)
inds_row
> [1] 1 3
亲切的问候,
smich
这是base R
的一个选项
df[Reduce(`|`, lapply(df, grepl, pattern = ",")),]
df <- structure(list(X1 = structure(1:3, .Label = c("1,2,3", "2,3",
"4"), class = "factor"), X2 = structure(1:3, .Label = c("a",
"b", "c"), class = "factor"), X3 = structure(c(1L, 3L, 2L), .Label = c("2,3,4",
"4", "a"), class = "factor")), class = "data.frame", row.names = c(NA,
-3L))