저는 plyr에서 온 dplyr을 배우고 xtabs 출력으로부터 (그룹당) 열 (상호 작용 당)을 생성하려고합니다.tidyr spread 함수는 컴팩트 벡터가 예상 될 때 희소 행렬을 생성합니다.
짧은 요약 :
> xtabs(data=data.frame(P=c(F,T,F,T,F),A=c(F,F,T,T,T)))
A
P FALSE TRUE
FALSE 1 2
TRUE 1 1
지금 do(
가 원하는이 데이터의 : 나는
A B
1 2
xtabs 데이터를 원하는 경우
A B
1 NA
NA 2
받고 있어요는 다음과 같습니다 데이터 프레임 :
> xtabs(data=data.frame(P=c(F,T,F,T,F),A=c(F,F,T,T,T))) %>% as.data.frame
P A Freq
1 FALSE FALSE 1
2 TRUE FALSE 1
3 FALSE TRUE 2
4 TRUE TRUE 1
이제 레벨이 상호 작용하는 열이있는 단일 행 출력을 원합니다.
FALSE_FALSE TRUE_TRUE FALSE_TRUE TRUE_FALSE
1 1 2 1
을하지만 그 대신 나는 분명히 여기서 뭔가를 오해하고있어
> xtabs(data=data.frame(P=c(F,T,F,T,F),A=c(F,F,T,T,T))) %>%
as.data.frame %>%
unite(S,A,P) %>%
spread(S,Freq)
FALSE_FALSE FALSE_TRUE TRUE_FALSE TRUE_TRUE
1 1 NA NA NA
2 NA 1 NA NA
3 NA NA 2 NA
4 NA NA NA 1
를 얻을 : 여기에 내가 무엇을 찾고 있습니다. 나는 (일관성 magrittr 파이프를 사용하여) 여기 reshape2의 코드에 해당하는 찾고 있어요 :
> xtabs(data=data.frame(P=c(F,T,F,T,F),A=c(F,F,T,T,T))) %>%
as.data.frame %>% # can be omitted. (safely??)
melt %>%
mutate(S=interaction(P,A),value=value) %>%
dcast(NA~S)
Using P, A as id variables
NA FALSE.FALSE TRUE.FALSE FALSE.TRUE TRUE.TRUE
1 NA 1 1 2 1
이
(나는이 간단한 예에서 그룹화 변수가 없기 때문에 NA주의하는 것이 여기에 사용됩니다)
업데이트 - 흥미롭게도 단일 그룹화 열을 추가하면이 문제가 해결 된 것 같습니다. 왜 내가 말하지 않고 그룹화 열을 합성합니다 (아마도 row_name에서)?
이것은 부분적인 해결책처럼 보입니다.
[**이 **] (https://github.com/hadley/tidyr/issues/41)는 같은 문제인 것처럼 보입니다. – Henrik
@Henrik : 참으로 그렇습니다. –
[This] (http://stackoverflow.com/q/25960394/937932) 해들리에 의한 설명 설명과 함께 역으로 동일한 문제입니다. 업데이트에서 발견했듯이 두 가지 출력은 올바른 맥락에서 의미가 있습니다. 문맥이 암묵적 일 때,'spread()'는 추측해야한다. – nacnudus