2017-11-27 4 views
1

설문 조사에서 7 가지 질문에 대한 답변 목록이 있으며 각 열에는 7 번째 질문과 가장 가까운 (6 번째 대답) 응답을 찾으려고합니다. 일부는 정확히 동일하지 않으므로 처음 6시와 7시에 가장 가까운 숫자 사이의 차이를 생성하는 새로운 변수를 만들고 싶습니다. 아래 예는 0을 산출합니다.R 열에서 가장 가까운 숫자 일치

s <- c(1,2,3,4,5,6,3) 
s <- t(s) 
s <- as.data.frame(s) 
s 

어떤 도움을 주실 수 있습니다. 시도한 내용이 실제로 닫히지 않았으므로 코드를 시도하지 않은 것에 대해 사과드립니다.

답변

2

어때?

which.min(abs(s[1, 1:6] - s[1, 7])) 

나는 그것이 어떻게 든 일반화되기를 원하지만 그 정보를 더 제공해야합니다. 또는 그냥 루프를 통해 실행하십시오 :-)

편집 : 덧글에서 루프를 추가하고 정확하게 두 작은 것들을 변경했습니다.

s <- c(1,2,3,4,5,6,3) 
t <- c(1,2,3,4,5,6,7) 
p <- c(1,2,3,4,5,6,2) 
s <- data.frame(s,t,p) 
k <- t(s) 
k <- as.data.frame(k) 

k$t <- NA ### need to initialize the column 
for(i in 1:3){ 
    ## need to refer to each line of k when populating the t column 
    k[i,]$t <- which.min(abs(k[i, 1:6] - k[i, 7])) } 
+0

감사합니다. 나는 그것을 좀 더 일반화 할 필요가 있다고 생각합니다. 몇 가지 예제 코드를 사용하여이 루프를 시도하고 모든 행에서 동일한 결과를 산출합니다. s <- c (1,2,3,4,5,6,3) t <- c (1,2,3,4,5,6,7) p <- c (1,2, (s, t, p) k <- t (s) k <- as.data.frame (k) for (i in 1 : 3) { k $ t <- which.min (abs (k [i, 1 : 6] - k [i, 7])) } – dhrice

+0

제공 한 루프를 포함하도록 답변을 편집했습니다. – user2602640

관련 문제