2016-08-31 13 views
-1

DataFrame内の列から評価を抽出しようとしています。私は以下の関数を書いています。ただし、関数は実行を停止せず、列は更新されません。制御構造を持つR関数から値を返す方法

カラム値は文字列です。

  • ランクR暴力性的コンテンツ言語
  • 評価PG-13コンテンツ言語
  • ""

所望の出力:

  • 列の行の値がある場合""または新しい値よりも空の場合NA
  • 列の行の値は、列の行値よりも、評価PG-13コンテンツ言語である場合、新しい値が「R」
  • なければならないよりも、ランクR暴力性的コンテンツの言語である場合新しい値は"PG-13"

    C <- function (column) 
    { 
        len <- length(DF$column) 
    
        for (i in 1:len) 
    
        { 
        a <- DF$column[i] 
        b <- unlist(strsplit(a," ")) 
    
        if (length(b) == 0) 
        { 
    
        x <- NA 
    
        DF$column[i] <- x 
    
        } else (b[1] == "Rating" & length(b) > 0) 
    
        DF$column[i] <- mpaaRating[2] 
    
    
        } 
    } 
    
    
    DF$mpaa <- CleanMpaa(DF$mpaa) 
    

は単に、ネストされたを使用

+0

*そうでない場合、評価はRです。* ...これはどういう意味ですか?サンプルデータを使用して説明すると役立ちます。 – Parfait

+0

こんにちはパフェ、私は私の質問を明らかにした。私はこれが役立つことを願っていますありがとうございます –

答えて

0

ありがとうべきです。ループは必要ありません:

DF <- data.frame(list(mpaa=c("Rating R", "Rating PG-13", "", "PG")), 
       stringsAsFactors = FALSE) 
DF 
#   mpaa 
# 1  Rating R 
# 2 Rating PG-13 
# 3    
# 4   PG 

DF$clean_mpaa <- ifelse(nchar(DF$mpaa) == 0, NA, 
         ifelse(grepl("Rating", DF$mpaa),   # FINDS PATTERN 
           gsub("Rating ", "", DF$mpaa),  # REPLACES PATTERN 
           DF$mpaa)) 
#   mpaa clean_mpaa 
# 1  Rating R   R 
# 2 Rating PG-13  PG-13 
# 3     <NA> 
# 4   PG   PG 
+0

こんにちはパフェ。 DFには完全な文字列を含める必要があります。格付けR暴力性的コンテンツの言語。 if elseを適用した後、新しい値は "R"またはPGなどになります。ありがとうございます。 –

+0

私は分かりません。このソリューションでは、* "Rating" *を削除する新しいフィールドが追加され、元の列と新しい列が保持されます。必要な結果と実際のデータを投稿する必要があるかもしれません。 – Parfait

関連する問題