4 열의 값을 포함하는 데이터 프레임이 있습니다.
예를 들면 : ID, price, click count,rating
내가하고 싶은 것은이 데이터 프레임을 N 개의 다른 그룹으로 "분할"하는 것입니다. 각 그룹은 동일한 가격, 클릭 수 및 등급 속성 분포를 가진 동일한 수의 행을 갖습니다.
이 문제를 해결하는 방법에 대한 약간의 아이디어가 없으므로 조언을 부탁드립니다!
4 열의 값을 포함하는 데이터 프레임이 있습니다.
예를 들면 : ID, price, click count,rating
내가하고 싶은 것은이 데이터 프레임을 N 개의 다른 그룹으로 "분할"하는 것입니다. 각 그룹은 동일한 가격, 클릭 수 및 등급 속성 분포를 가진 동일한 수의 행을 갖습니다.
이 문제를 해결하는 방법에 대한 약간의 아이디어가 없으므로 조언을 부탁드립니다!
답변:
이것은 매우 늦은 답변이지만, 언급 된 문제가 어디서나 논의되었는지 여부를 인터넷 검색 하면서이 페이지를 찾았습니다. 누군가가 지금부터이 페이지를 찾으면 내 대답이 도움이 될 것입니다.
나는 R 패키지를 작성했다.이 패키지는 질문에 대한 것과 정확히 일치 data.frame합니다. 하나 또는 여러 기준에서 그룹 간의 차이를 최소화하려고 시도하면서 N 개의 다른 그룹을 만듭니다. 반복 된 무작위 할당을 기반으로하는 간단한 방법을 사용하며 이는 승인 된 응답에서 제안 된 방법이기도합니다.
이것은 minDiff 패키지에 대한 링크입니다 .
명시된 문제를 해결하기 위해 다음을 사용할 수 있습니다.
library(minDiff)
assigment <- create_groups(dataframe, criteria_scale = c("price", "click count", "rating"), sets_n = N, repetitions = 1000)
repetitions인수는 무작위로 다른 그룹을 생성하는 빈도를 결정합니다. 그룹간에 최소한의 차이가있는 최상의 할당이 반환됩니다.
Alex A의 대답은 각 그룹에 대해 동일한 확률을 제공하지만 그룹이 동일한 수의 행을 갖도록하는 질문의 요청을 충족하지 않습니다. R에서 :
stopifnot(nrow(df) %% N == 0)
df <- df[order(runif(nrow(df))), ]
bins <- rep(1:N, nrow(df) / N)
split(df, bins)