>

0 값을 중간 값으로 변경하기 위해 데이터 프레임을 확인하는 R의 루프를 쓰고 싶습니다. 불행히도 오류가 발생합니다.

그것은 내 루프의 일부일뿐입니다.

y <- median(df[1])
Error in median.default(df[1]) : need numeric data

사용하면 작동합니다.

y <- median(df$name_of_the_column)

이것은 내 루프입니다. 루프를 끝내지 않았습니다. 아직 진행 중입니다.

i = 1
for (x in df) {
  if (df[i][df[i] == 0]) {
    df[i][df[i]] <- median(df[i])
  }

  • 답변 # 1

    na.aggregate 로 쉽게 할 수 있습니다  0을 NA 로 교체 한 후 . 기본적으로 na.aggregate  각 열에 반복하고 NA 를 교체   median 와 함께  해당 열의

    library(zoo)
    na.aggregate(replace(df, df == 0, NA), FUN = median)
    
    
    <시간>

    루프가 필요한 경우 (여기서 median 를 계산하는 동안 0을 제외합니다. )

    for(i in seq_along(df)) {
      df[[i]] <-  replace(df[[i]], df[[i]] == 0, median(df[[i]][df[[i]] !=0]))
     }
    
    
    <시간> OP의 게시물에 문제는 median 를 적용한 결과입니다   data.frame 에   median 로   vector 로 입력을 기대합니다 . ?median 에 따르면

    와이즈 비즈

    x - an object for which a method has been defined, or a numeric vector containing the values whose median is to be computed.

    를 사용할 수 있습니다  또는 df[,1]  열을 df[[1]] 로 추출  그런 다음 vector 를 적용하십시오.   median 와 동일한 동작을 얻기 위해  ( 'df'가 $ 라고 가정하면 )

    data.frame

  • 이전 html - Javascript 만 사용하여 특정 div 블록의 열기 및 닫기를 어떻게 설정합니까?
  • 다음 scala - 213 용 SBT 버전은 언제 있습니까?