2014-09-22 7 views
1

"qdap"패키지에서 텍스트 행 값을 열로 바꾸기 위해 wfm 함수를 사용하고 데이터에 숫자가 포함되어있을 때 문제가 발생했습니다. 예를 들어 행 값이 "abcdef"이면 조 변경은 잘 작동하지만 값이 "ab1000"이면 숫자의 자름이 발생합니다. 누구든지이 문제를 해결하는 방법에 대한 제안을 도울 수 있습니까?qdap을 사용하여 R의 열에서 행으로 바꾸기

접근 방식은 지금까지 시도 :

input <- read.table(header=F, text="101 ab0003 
      101 pp6500 
      102 sm2456") 
colnames(input) <- c("id","channel") 

require(qdap) 
library(qdap) 
output <- t(with(input, wfm(channel, id))) 
output <- as.data.frame(output) 

expected_output<- read.table(header=F,text="1 1 0 
          0 0 1") 

colnames(expected_output) <- c("ab0003","pp6500", "sm2456") 

답변

0

나는 어쩌면 wfm이 작업에 적합한 도구가 아닙니다 생각합니다. 단어로 나눌 문장이 실제로없는 것 같습니다. 따라서 불필요한 오버 헤드가 많은 함수를 사용하고 있습니다. 당신이 정말로 다른 그룹 변수에 의해 가지고있는 값을 도표화하기를 원하는 것.

여기에는 두 가지 접근 방법이 있습니다. 이 그것을 다시 원래의 문제를 우리에게 가져다 인 경우에

library(qdapTools) 
mtabulate(with(input, split(channel, id))) 

##  ab0003 pp6500 sm2456 
## 101  1  1  0 
## 102  0  0  1 

t(with(input, table(channel, id))) 

##  channel 
## id ab0003 pp6500 sm2456 
## 101  1  1  0 
## 102  0  0  1 

그것은 당신의 MWE 데이터의 복잡성을 반영하지 않는 가능할 수있다 : qdapToolsmtabulate가 다른 사용하여 기본 R의 table 사용 하나. wfmtm 패키지를 백엔드로 사용하여 일부 조작을합니다. 그래서 우리는 ldots (...)에 무엇인가를 공급해야합니다. 나는이 문서를 다시 읽어와이 (내가 dev에 버전에서이 정보를 추가 한) 혼란을 조금하지만 우리가 여기서 볼 수 있듯이 TermDocumentMatrixremoveNumbers=FALSE를 전달하려는 :

output <- t(with(input, wfm(channel, id, removeNumbers=FALSE))) 
as.data.frame(output) 

##  ab0003 pp6500 sm2456 
## 101  1  1  0 
## 102  0  0  1 
+0

감사 타일러 -이 문제를 해결했다. R에 대한 비교적 새로운 사용자로서 이것은 값을 전치시키기 위해 본 예제 중 하나였습니다. 나는 "reshape2"패키지의 dcast 기능을 사용하여 문제를 해결할 수있었습니다. –