R에서 데이터 프레임을 사용하고 있는데, col4는 col5보다 작다고 가정되지만 때로는 발생하지 않습니다.데이터 프레임 시프트 열
들이 R.
의 비용이 꽤 시간이 있기 때문에 어쨌든 내가, 그리고 viceversa에 forloop을 사용하지 않고 COL5에 col4에서 값이 이동할 수가즉, col4 주어진 행 = 100의 경우, col5 = 10이면 col4가 10이되고 col5가 100이되어야합니다.
미리 감사드립니다.
R에서 데이터 프레임을 사용하고 있는데, col4는 col5보다 작다고 가정되지만 때로는 발생하지 않습니다.데이터 프레임 시프트 열
들이 R.
의 비용이 꽤 시간이 있기 때문에 어쨌든 내가, 그리고 viceversa에 forloop을 사용하지 않고 COL5에 col4에서 값이 이동할 수가즉, col4 주어진 행 = 100의 경우, col5 = 10이면 col4가 10이되고 col5가 100이되어야합니다.
미리 감사드립니다.
데이터 프레임이 D라는 것을 가정 :
newCol4 <- pmin(d$col4, d$col5)
newCol5 <- pmax(d$col4, d$col5)
d$col4 <- newCol4
d$col5 <- newCol5
스와핑을 수행하기 위해 논리적 인덱싱과 임시 변수를 사용할 수 있습니까?
# find the rows where col4 >= col5 (or maybe >? depends on what you want)
idx <- data$col4 >= data$col5
# idx is TRUE for columns we want to swap.
# now do the swap:
# a) save data$col5
tmp <- data$col5[idx]
# b) replace data$col5 with the col4 values (where relevant)
data$col5[idx] <- data$col4[idx]
# c) replace data$col4 with our saved col5 values
data$col4[idx] <- tmp
indices <- which(data.frame.instance[,4]<data.frame.instance[,5])
data.frame.copy <- data.frame.instance
data.frame.copy[indices,5] <- data.frame.instance[indices,4]
data.frame.instance[indices,5] <- data.frame.copy[indices,4]
rm(data.frame.copy, indices)
은 당신이 원하는 일을해야 - 루프도하고.
'which'에 대한 호출이 필요하지 않으며 제거 될 수 있습니다. –
주어진 예제에서>는> =에 동일한 결과를 제공합니다. 물론 더 높은 목적이있을 수 있습니다. –
예, 그렇기 때문에 언급합니다. –