2012-01-03 2 views
0

데이터 프레임에 factor 열이 채워져 있고 임의의 factor 값의 행을 추가하려고합니다. 어떻게해야합니까?임의의 인수 값의 행을 데이터 프레임에 추가

> df = as.data.frame(list(a="YES", b="other", c="do_not_know")) 
> levels(df$c) <- c("do_not_know", "yes", "no") 
> df2 <- subset(df, subset=(a=="NO")) 
> df2 
[1] a b c 
<0 rows> (or 0-length row.names) 
> str(df2) 
'data.frame': 0 obs. of 6 variables: 
$ a   : Factor w/ 1 level "YES": 
$ b   : Factor w/ 1 level "other": 
$ c   : Factor w/ 3 levels "do_not_know",..: 

지금, 나는 무작위로 하나 list("YES", "other", "do_not_know"), list("YES", "other", "yes"), list("YES", "other", "no")을 생산하는 random_row(df2)을하고 싶습니다.

는 (하나 그것 항상 동일한 데이터 프레임, 나는 일반적인 기능을합니다. 제약은 모든 열은 항상 고려 값 될 것입니다.) 당신이 임의 의미하는 경우

+1

재현 가능한 예제를 제공하십시오. –

+0

내가 다루고있는 것처럼 재현 할 수있는 재현 가능한 방법을 사용하고 있습니다. 아래의 답변은 가까운 것입니다 ... 지금 그걸 가지고 놀아 라. – prabhasp

답변

2

요소 값 당신이 원하는 각 개별 요소 즉, column에 대해 해당 요소 (열)에서 사용 가능한 수준의 무작위 값을 그립니다 데이터 집합에서 새 행을 생성합니다. 재현 가능한 예제가 없기 때문에 테스트되지 않은 R 코드 만 제공 할 수 있습니다. 먼저 요인 변수에서 가능한 모든 수준을 추출한 다음 해당 수준에서 무작위로 추출하여 새로운 임의의 행을 만듭니다. 나는 스타일 루프를 적용한다.

+0

'> sapply (available_levels, sample, n = 1)'오류 : 'FUN (X [[1L]], ...)의 오류 : 사용하지 않은 인수 (n = 1)' '> sapply (available_levels, function (x) sample (x, 1))'하지만 효과가있었습니다. – prabhasp

+0

죄송합니다, n = 1 크기가 1이어야합니다, 내 대답을 편집했습니다. –

관련 문제