원본 데이터 프레임에는 ID, 유형 및 순위가 3 열입니다. 지금은 내가 그렇게 한 일이다 즉 새로운 데이터 프레임을 하나의 열로 유형의 각 가능한 값을 갖는 (아래의 작은 예는, 원래의 데이터가> 100.000 행과 30 유형이 포함 참조)R : 행과 열의 모양을 바꿉니다.
data1
id type rank
x a 1
y a 2
z a 3
x b 1
z b 2
y c 1
data2
id a b c
x 1 1 NA
y 2 NA 1
z 3 2 NA
을 만들려면 멀리 :
for (i in (1:nrow(data1))) {
dtype <- data[i,2]
if (any(data2$id == data1[i,1], na.rm = TRUE)) {
row <- grep(data1[i,1],data2$id)
data2[row,c(dtype)] <- data1[i,3]
} else {
data2[nrow(data2)+1,1] <- as.character(data1[i,1])
data2[nrow(data2),c(dtype)] <- data1[i,3]
}
}
이 예가 효과적이지만 (이 예제가 내가하는 일을 설명하기를 바란다.) 아주 느리다. 이 알고리즘을 최적화 할 수있는 힌트가 있습니까?
은 "ID"독특한인가 모든 100k 행에 대해 또는 해당 열에 중복 값이 있습니까? – A5C1D2H2I1M1N2O1R2T1