2014-04-24 4 views
2

데이터 집합이 아래에 있습니다. 각 제품 (P *)에는 특정 기능 (F *)이 켜짐/꺼짐 (1/0)이 있습니다. 나는 테이블을 잘 포맷 할 수 없다.누적 피쳐 그룹화 및 시각화 R

Product F1 F2 F3 F4 .... 
P1  1 0 1 1 
P2  0 1 1 0 
P3  1 0 1 1 
P4  0 0 0 1 
.. 
.. 
Total  2 1 3 3 

두 가지 질문이 있습니다. 하나는 아래에 설명 된 요약 만들기와 관련이 있으며 다음은이 데이터를 시각화하는 것입니다. 요약

1) : 이 데이터 집합을 감안할 때, 나는) 1 (에있는 기능의 모든 조합에 대해 제품의 합계를 얻을 싶어요. 예 :

제 실제 데이터 세트에는 기능 수가 200이고 제품 수는 10k +와 같습니다. 계산을 최적화하기 위해 특정 기능이있는 제품의 비율에 대한 임계 값을 제공하는 데 신경 쓰지 않습니다. 내 말은, 주어진 예에서 내 임계 값이 50 %이고 4 가지 제품이 있다고 가정 할 수 있습니다. 따라서 50 % 이상으로 켜져있는 모든 기능 즉, 2는 그룹화로 간주되며이 경우에는 Feature F1, F3, F4가 될 수 있습니다. I는 바 차트에이 결과를 시각화 생각 : 그 열 합 < 2.

2) 시각화 때문에 F1은 고려되지 않는다. 이것을 시각화하는 더 좋은 방법이 있다면 제안하십시오.

내 접근 방식 : R과 통계에 익숙하지만 C#에 정통합니다.

  1. 모든 지형지 물에 대한 합계를 계산합니다.
  2. 가장 많은 카운트부터 시작하는 각 합계 세트에 대해이 기능을 사용하는 모든 제품을 결정하십시오. 위의 샘플 데이터 세트 : F3, F4의 최대 개수는 3 개 (임계 값 이내)이므로 F3, F4가 설정된 모든 제품을 가져옵니다. 다음 (최대 카운트 - 1) 2는 기능 F1, F3, F4가되며이 기능이 설정된 모든 제품을 가져옵니다. 임계 값이 충족 될 때까지 수행하십시오.

저는이 코드를 작성하는 과정에 있으므로 코드 샘플을 아직 공유하지 않았습니다.

필자의 접근 방식은 데이터 세트의 크기를 고려할 때 계산 비용이 많이 들며이를 달성하는 더 좋은 방법이 있다고 생각합니다. 당신의 노력에 미리 감사드립니다.

+1

으로는 너무 광범위하다. dplyr 도구 및 ggplot2 시각화 패키지는 이러한 유형의 문제를 해결하기 위해 설계되었으며 설명을 위해이 글을 읽는 것이 좋습니다. http://vita.had.co.nz/papers/tidy-data.pdf –

+0

If 나는 당신이 200 개까지의 특징을 가지고 있고이 200에 대해 1 또는 0의 모든 고유 한 조합을 합산하고자합니다. 그것은 10^60을 넘는 2^200의 가능한 조합이어야합니다. 그렇다면 나는 이것이 할 수있는 프로젝트라고 생각하지 않는다. –

+0

감사합니다. David & John. dplyr 도구를 살펴 보겠습니다. 그렇습니다, 나는 이것을 수행하는 것이 계산 상으로 비싸고, 단지 의견을 얻고 아이디어를 얻고 싶다고 동의합니다. – user1596213

답변

1

사물을 유쾌하게하는 방법을 알려주십시오. 제공

# reading your example data 
df <- read.table(text="Product F1 F2 F3 F4 
P1  1 0 1 1 
P2  0 1 1 0 
P3  1 0 1 1 
P4  0 0 0 1", header=TRUE, strip.white=TRUE) 

# reshape the data from wide to long format 
require(reshape2) 
df2 <- melt(df, id="Product") 

# creating a barplot 
require(ggplot2) 
ggplot(df2, aes(x=Product, y=value, fill=variable)) + 
    geom_bar(stat="identity") 

: 여러 질문을하고, 답변이 형식에 적합하지 긴 튜토리얼의 형태를 취할 것입니다 :이 질문을 의미 enter image description here

+0

Visualization 쿼리에 응답 해 주셔서 감사합니다.그 외에도 reshape API를 사용하면 새로운 것을 발견하는 데 도움이되었습니다. – user1596213