1つのデータフレーム内の複数の列のコンテンツを比較し、ブール値を2番目のデータフレームに出力します

ベン

データフレームを(人間が)より読みやすい形式に変換しようとしています。現在のデータフレーム(DF1)には、列Aに文字列(質問)のリスト、列Bに文字列(カテゴリ)のリストが含まれています。アイテムが複数のカテゴリに該当する場合、DF1のさらに下に同じ行があります。列Aに質問がありますが、列Bに別のカテゴリがあります。

例えば

   column1       column2      Column3
"question 1"   "category A"  "subcategory A"
"question 2"   "category A"  "subcategory B"
"question 1"   "category B"  "subcategory A"

データフレームを変換して質問を作成し、列Bのカテゴリを列ヘッダーとして使用します。ブール値は、質問がそのカテゴリに該当するかどうかを示します。

例えば

  Question    CategoryA    CategoryB
"question 1"    TRUE         TRUE
"question 2"    TRUE         FALSE

以下を使用して、DF1から固有の質問のリストを抽出しました。

question <- list()
for (x in DF1$column1){
  if (!(x %in% question)){
    question[[x]] <- x
  }
}

Rでこれを行うための最良の方法は何ですか?これはRで非常に非効率になる可能性があると思うので、可能であれば一連のネストされたループを避けたいと思いますか?

どうもありがとう!!

マイク

このようなことはトリックをしますか

library(dplyr)
library(tidyr)

column1 <- c(
"question 1",   
"question 2" , 
"question 1" )

column2   <- c(
"category A"  ,
"category A"  ,
"category B"  )


column3 <- c(
"subcategory A",
"subcategory B",
"subcategory A")

df <- data.frame(column1, column2, column3, stringsAsFactors = FALSE)

dfwide <- df %>% 
          select(-column3) %>% 
          mutate(col4 = TRUE) %>% 
          spread(column1, col4, fill= FALSE)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ