2017-03-24 1 views
-4

다음 데이터가있는 csv 파일이 있습니다.문자열 데이터의 for 루프를 사용하여 데이터 프레임을 만드는 중 R

이 데이터를 데이터 프레임 "dfSubClass"에 넣으려고했습니다. 나는 "uniquesubject"라는 고유 한 주제 목록과 "uniqueclass"form "dfSubClass"라는 고유 한 클래스 목록을 발견 할 것입니다. "uniquesubject", "uniqueclass"를 사용하고 루프 내가 다음 있지만 작동하지 않는 시도

csv and expected data 모든 제목과 클래스 조합을 창조하고 싶었다.

dfSubClass <- read.csv("SubjectClass.csv",header = TRUE) 
uniquesubject = unique(planningItems["Subject"]) 
uniqueclass = unique(planningItems["Class"]) 
newDF <- data.frame() 
for(Subject in 1:nrow(uniquesubject)){ 
for(Class in 1:nrow(uniqueclass)){ 
    newDF = rbind(newDF,c(uniquesubject[Subject,],uniqueclass[Class,])) 
    } 
} 

이렇게하면 원하는 출력이 나오지 않습니다.

+0

안녕하세요. SO! [ask]와 [mcve]를 읽으십시오. 데이터를 표현하기 위해'dput()'을 사용하십시오. 귀하의 질문에'dput (dfSubClass)'결과를 넣으십시오. 질문을 수정하십시오. http://stackoverflow.com/posts/42999206/edit – jogo

답변

0

나는 모든 조합을 자동으로 생성하는 expand.grid 함수를 사용하는 것이 좋습니다.

코드에서 unique(planningItems["Subject"]) 또한 실제로이 경우에는 좋지 않은 데이터 프레임을 반환합니다. 벡터가 더 좋을 것입니다.

여기 내 코드입니다 :

uniquesubject = unique(dfSubClass$Subject) 
uniqueclass = unique(dfSubClass$Class) 
newDF=expand.grid(uniquesubject,uniqueclass) 

코드에서 for 루프, 주요 문제를 사용하면 rbind 기능에 대한 경우. 여기 내 코드는 다음과 같습니다

uniquesubject = unique(dfSubClass$Subject) 
uniqueclass = unique(dfSubClass$Class) 
newDF = data.frame() 
for (Subject in 1:length(uniquesubject)){ 
    for (Class in 1:length(uniqueclass)){ 
     newDF=rbind(newDF,data.frame("Subject"=uniquesubject[Subject],"Class"=uniqueclass[Class])) 
    } 
} 

나는 코드의 주요 다른 내가 대신 c()를 사용하여 벡터를 생성하는 rbind() 내부 dataframe을 만든 생각합니다. 이는 결과가 행렬이 아닌 데이터 프레임 구조에 있는지 확인하기위한 것입니다.

+0

안녕하세요 고맙습니다. 내부 for 루프에서 다른 작업을 수행하십시오. 같은 논리 내가 C에서 노력했을 때 + + 내가 예상 결과를 얻고 있는데 R에 내 newDF 왜 숫자 값을 보여주는 문자열 값을 표시하지? – gajananbejgamwar

+0

벡터를 다시 바인딩 할 때 (이 경우'c (uniquesubject [Subject,], uniqueclass [Class,])'), 데이터 프레임 대신 매트릭스를 반환합니다. 따라서 모든 것을 숫자로 변환하려고 시도 할 것입니다. – TooYoung

+0

올바른 결과를 얻지 못했고, 생성 된 newDF가 모두 이며, 제 코드도 동일합니다. 왜 그렇게하는거야? – gajananbejgamwar

관련 문제