2017-12-28 3 views
0

다음 벡터를 사용하여 새 데이터 테이블을 만들고 싶습니다. 저는 두 개의 테이블과 100 명씩의 목록과 5 가지 테스트 목록을 가지고 있습니다. 테이블을 결합하고 싶지만, 각 과목마다 각 테스트에 대한 행이 필요합니다. 따라서 새로운 테이블에는 500 행이 있습니다. 나는 아래의 단순화 된 예제를 사용했다. 이 R에두 벡터 범주에서 데이터 테이블 만들기 R

person <- data.frame(c("a", "b", "c", "d")) 
test <- data.frame(c("1", "2", "3", "4", "5")) 

나는 아래

person test 
a   1 
a   2 
a   3 
a   4 
a   5 
b   1 
b   2 
b   3 
b   4 
b   5 

처럼이에서 새 테이블을 만들고 싶어 ... 등

내가 처음에 가입했지만, 일치 할 변수가없는 그리고 행운을 빌어 붙이기도했다. 나는 이것이 간단하게 들리기 때문에 나는 뭔가를 놓친다 고 느낀다. 어떤 도움을 주시면 감사하겠습니다!

답변

1

여기 있습니다.

expand.grid(person = c("a", "b", "c", "d"), 
       test = c("1", "2", "3", "4", "5")) 

그것을이 사람과 시험 사이의 모든 가능한 페어링을 제공하는 data.table()

expand.grid(person = c("a", "b", "c", "d"), 
      test = c("1", "2", "3", "4", "5"))%>% 
data.table() 

을 확인하십시오.

또한 이것은 아마도 일부 게시물의 중복입니다.

+0

덕분에, 나는 오류 경고 메시지를 받고 있어요 : format.data.frame에서 를 (x는, 숫자는 =이 자리는 na.encode = FALSE는) : 손상된 데이터 프레임 : 열이 잘립니다 또는 NAs로 패딩 된 경우 > –

+0

data.frame을'data.table()'으로 강제 변환 할 수 있어야합니다. 그 경고가 왜 일어나는지 모르겠다. – InfiniteFlashChess

1

패키지의 CJ을 사용할 수도 있습니다. 출력은 data.table입니다.

library(data.table) 

CJ(person[, 1], test[, 1]) 
#  V1 V2 
# 1: a 1 
# 2: a 2 
# 3: a 3 
# 4: a 4 
# 5: a 5 
# 6: b 1 
# 7: b 2 
# 8: b 3 
# 9: b 4 
# 10: b 5 
# 11: c 1 
# 12: c 2 
# 13: c 3 
# 14: c 4 
# 15: c 5 
# 16: d 1 
# 17: d 2 
# 18: d 3 
# 19: d 4 
# 20: d 5 
당신의 응답을
+0

답장을 보내 주셔서 감사합니다. 오류가 발생했습니다 FUN (X [[i]], ...) 오류 : 잘못된 열입니다. 치수가 있습니다. 포맷 할 수 없습니다. data.table (table())의 결과 인 경우 대신 as.data.table (table())을 사용하십시오. 내 열은 특정 유형이어야합니까? 내 테스트는 필자가 생각할 수있는 요인이되어야하지만 내 인물 열은 어떤 형식이어야 하는가? –

+0

코드 예제 데이터 프레임'person'과'test'에 대해 작동하는지 확인하십시오. 작동하는 경우 실제 데이터 프레임이 제공 한 '사람'및 '테스트'데이터 프레임과 유사해야합니다. – www