2015-02-03 2 views
-1

저는 R에 비교적 익숙하고 조작하려는 .xlsx 스프레드 시트를 가지고 있습니다. 스프레드 시트를 R에 가져 왔으며 30 열과 10000 행에 가까운 데이터 행을 가져 왔습니다. 내가 할 수 있기를 원하는 것은 열 4 개만 반복하고 인접한 3 개 또는 2 개의 셀에 같은 값이 있는지 확인하는 것입니다.인접한 셀을 반복하고 R을 행 아래로 내림

이 인스턴스를 계산하려면이 인스턴스를 계산하고 싶습니다.

필자는 for a1을 열 a1과 b1을 c1 등으로 비교 한 다음 같은 값을 가진 인접한 셀의 수를 저장하고 다음 행으로 루프하는 것을 상상해 봅니다. C++에서이 작업을 수행 할 수 있지만 R의 구문에는 익숙하지 않습니다.

누군가가 나에게 약간의 지침을 줄 수 있다면 정말 고맙겠습니다!

+1

당신은 재생 예를 넣을 수 있습니다? (귀하의 입력 data.frame 및 원하는 출력) –

답변

2

diff 여기에 유용합니다 :

set.seed(42) 
DF <- data.frame(matrix(sample(1:4, 20, TRUE), ncol = 4)) 
# X1 X2 X3 X4 
#1 4 3 2 4 
#2 4 3 3 4 
#3 2 1 4 1 
#4 4 3 2 2 
#5 3 3 2 3 
sum(apply(DF, 1, function(x) sum(c(1, diff(x) != 0)) < 4)) 
#[1] 3 
+0

아아 도움을 가져 주셔서 감사합니다! 한 가지 더 질문합니다. 4 열의 데이터 그룹을 분리하여 공백으로 분석하고 있습니다. 공란을 무시하도록 선택할 수 있습니까? 나는 na.omit()을 시도했지만 그것은 내 셀을 위 아래로 움직이고 인접한 셀을 따로 따로 움직일 수 있다고 생각합니까? – Krystian

+0

그것은 'NA'값을 어떻게 처리 하느냐에 달려 있습니다. 'c (1, 2, NA, 2)'가'TRUE' 또는'FALSE'일까요? 'c (1, NA, NA, 2) '는 어떨까요? – Roland

관련 문제