2016-10-13 2 views
0

현재 데이터 프레임을 교육/테스트 용 하위 집합으로 나누기를 원합니다. 데이터 프레임에는 여러 항목이 포함 된 열이 있고 일부는 (Aisle01, Aisle02 등)과 같은 하위 항목을 포함합니다. 여러 열의 부분 문자열을 필터링하여 걸려 넘어지고 있습니다.문자열에 특정 문자가 포함 된 경우 필터 및 하위 집합

데이터 샘플 :

Column1 Column2 Column3 

Wall01 Wall04 45.6 
Wall04 Aisle02 65.7 
Aisle06 Wall01 45.0 
Aisle01 Wall01 33.3 
Wall01 Wall04 21.1 

(x)의 내 데이터 프레임이 그 안에 '통로'의 여러 버전을 포함하는 두 개의 열이 포함 된 경우, 나는 "통로"를 포함 모두 열에서 모든 필터링하고 싶습니다. 아래 선이 어느 정도 올바른 경로에 있는지 궁금하십니까?

필터 (X, 컬럼 1 & 2 열 == 그렙 (X $으로의 컬럼 1 & X $ 2 열 "통로"))

원하는 결과 :

Column1 Column2 Column3 

Wall04 Aisle02 65.7 
Aisle06 Wall01 45.0 
Aisle01 Wall01 33.3 

미리 감사드립니다. 내가 볼 수

+0

재현 가능한 예를 제공해주십시오. 데이터 집합 (또는 처음 몇 행)에서'dput'을 사용하여 여러분이 말하는 것을 볼 수 있습니다. 그러면 마지막에 원하는 결과가 데이터 집합에 표시됩니다. – Barker

답변

0

가장 쉬운 해결책이 될 것입니다 : 당신이 당신의 행을 선택합니다 | 작업을 사용할 수 있도록

x <- x[grepl("Aisle", x[["column1"]]) | grepl("Aisle", x[["column2"]]), ] 

대신 grepgrepl 논리적 만들어 사용. 또한 나는 당신이 문제를 일으킬 수있는 몇 가지 코드를 신속하게 찾아보고 싶었습니다. 당신의 grep 문장의 시작 부분에 x$column1 & x$column2

  1. 함수가 column1column2의 각 항목에 & 작업 페어를 실행하려고 것을 의미합니다. 이러한 문자는 논리적이 아니기 때문에 이상한 결과가 나타납니다.

  2. greppattern은 일치하려는 문자열 앞에 오므로 일치하지 않으므로 grep("Aisle", columnValue)이어야합니다. ?functionName을 실행하면 함수에 대한 정보를 얻을 수 있으므로 메모리에서 알아낼 필요가 없습니다.

  3. filter은 데이터 프레임이 아닌 시계열 (ts) 개체에 대한 함수입니다. 이런 식으로 오류를 사용하지 않았다는 것에 놀랐습니다.

행운을 빈다. 명확한 내용이 있으면 의견을 말하십시오.

+0

이것은 내가 찾고있는 것입니다. 가능하면 column1 및/또는 column2에 해당 문자열이 포함되어 있으면 (1 또는 0)과 같은 논리 출력을 표시하는 열을 원래 데이터 프레임에 만들 수 있습니까? – AVI

+0

'x [[ "isAisle"]] <- grepl ("통로", x [[ "column1"]]) | grep ("Aisle", x [[ "column2"]])' – Barker

+0

유용하지만, "isAisle"의 모든 값은 나에게 거짓 인 반면, 행을 포함하는 "Aisle" "통로"가 포함되지 않음. 그래도 다시 고마워! – AVI

관련 문제