0
희소 행렬에 긴 데이터 dataframe를 변환 :R - 다음과 같은 방법을 두 키와 데이터 열이 나는 큰 dataframe, 305K 행이
나는이 변환하려고 R에 다음 코드를 이용하여 스파 스 매트릭스 :
Error in sparseMatrix(i = RID, j = HID, x = VALUE, dimnames = list(levels(RID), :
NA's in (i,j) are not allowed
In addition: Warning messages:
1: In Ops.factor(i, !(m.i || i1)) : ‘+’ not meaningful for factors
2: In Ops.factor(j, !(m.j || i1)) : ‘+’ not meaningful for factors
012 다음 오류 메시지를 생산
#convert to factors
data$RID = as.factor(data$RID)
data$HID = as.factor(data$HID)
data$VALUE = as.numeric(data$VALUE)
str(data)
#remove nas
data = na.omit(data)
#create sparse matrix
X = with(data,sparseMatrix(i=RID,
j=HID,
x=VALUE,
dimnames=list(levels(RID), levels(HID))))
NAs를 제거 했으므로 오류 -NAS가 나타나는 이유를 모르겠습니다. 또한 요인 내에서 '+'에 대한 참조가 있지만 36k 요소를 모두 확인 했으므로 '+'가 없습니다.
해결책이 무엇인지 아는 사람이 있습니까?
는 당신이 문제를 다시 생성 할 수 있으므로 아래 데이터의 처음 20 행의 스냅 샷을 포함했다 :
"RID" "HID" "VALUE"
"361838" "620631" 76.55
"361838" "620671" 82.61
"361838" "620787" 57.73
"361838" "621146" 58.65
"361838" "637825" 64.15
"361838" "637859" 82.79
"361838" "641254" 50.38
"361838" "642105" 72.88
"361838" "646469" 45.79
"361838" "648400" 82.06
"395855" "301340" -5.12
"395855" "649304" 41.88
"395855" "650324" -30.83
"395855" "657458" 46.47
"395855" "658028" -0.53
"395855" "659504" 28.84
"395855" "660506" 29.03
"395855" "660519" 14.16
"395855" "660521" -38.17
"395855" "660547" 35.45
내가 요소를 볼 때, 나는 다음과 같은 얻을 수 있지만 :
> str(data)
'data.frame': 20 obs. of 3 variables:
$ RID : Factor w/ 30608 levels "361838","395855",..: 1 1 1 1 1 1 1 1 1 1 ...
$ HID : Factor w/ 37399 levels "2018","7990",..: 11604 11624 11709 11740 14031 14049 15086 15457 16821 17270 ...
$ VALUE: num 76.5 82.6 57.7 58.6 64.2 ...
'str (data)'와'str (X)'리포트를 보여줄 수 있습니까? 예를 들어 데이터 샘플을 제공하는 경우 'dput (head (data, 20))'를 사용하면 문제를 재현 할 수 있으므로 도움이 될 것입니다. 한 가지 가능성은 'RID'와 'HID'가 요인이 아니라는 것입니다. –
의견을 게시하지 말고 추가 정보를 포함하도록 질문을 편집하십시오. 열을 요인으로 변환하여 데이터를 업데이트 한 경우 새로운 오류를 반영하여 질문을 수정하십시오. 또한 NAs를 어떻게 제거하는지 보여주는 것도 유용 할 것입니다. –
저는 첫 번째 제안에 따라 RID와 HID를 요인으로 변환하고 모든 NA를 제거했습니다. 현재 문제와 오류를 표시하기 위해 질문을 다시 편집했습니다. – Tammboy