在数据帧中找到逗号并返回行(在r中)

问题描述 投票:0回答:5

我想在数据框中找到一个逗号并返回找到它的行。数据就像这个 r

r
5个回答
0
投票

通过将所有列粘贴在一起,您可以找到包含逗号的行:

虚拟数据集的示例:

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

0
投票

您可以添加标记找到逗号的行的列,然后筛选标记行的数据框。

data <- data %>%
     mutate(flag = ifelse(str_detect(columnC, ",")|str_detect(columnD, ",")|str_detect(columnE, ","), 1, 0) %>%
     filter(flag==1)

0
投票

我们可以使用filter_alldplyr

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

0
投票

假设您的数据框存储在变量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


0
投票

这是base R的一个选项

df[Reduce(`|`, lapply(df, grepl, pattern = ",")),]

data

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))
© www.soinside.com 2019 - 2024. All rights reserved.