5

私の目標と背景

reshape2 ライブラリを使用して溶かしたい R のデータ フレームがあります。理由は 2 つあります。

  1. ggplot を使用して、各質問の各ユーザーのスコアを棒グラフにプロットしたいと考えています。

  2. このデータを Excel に入れたいので、ユーザーごとに、感情、スコア、モチベーション、attitudeBefore などの混合を確認できます。私の意図は、メルトを使用してから、キャストしてデータをワイド形式に変換し、Excel に簡単にインポートできるようにすることでした。 .

私の問題

メルトを実行しようとすると、警告が表示され、最終的にメルト データ フレームに NA が含まれます。

Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = c(0.148024, 0.244452, -0.00421,  :
invalid factor level, NAs generated
2: In `[<-.factor`(`*tmp*`, ri, value = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,  :
invalid factor level, NAs generated

結果として得られる溶けたデータ フレームには、大量の NA が含まれます。同じ列に文字と数値の両方を使用しているためだと思います。

私の質問

その結果、2 つの質問があります。

質問 1: R でこれに対する回避策はありますか?

質問 2: この問題を回避するためにデータを構造化するためのより良い方法はありますか?

コード

これがデータフレームを作成するための私のコードです。

words <- data.frame(read.delim("sentiments-test-subset-no-text.txt", header=FALSE))
names(words) <- c("level", "question", "user", "sentiment", "score", "mixed")
words$user <- as.factor(words$user)
words.m <- melt(words, id.vars=c("user", "level"), measure.vars=c("sentiment", "score",     "mixed"))

私は形を変えて溶かすのはかなり新しいですが、それが最後の行で欲しいものだと思います.

データ

人間が読める形式のデータは次のようになります。

experimental    motivated   1   positive    0.148024    0
experimental    motivated   2   positive    0.244452    0
experimental    motivated   3   negative       -0.004210    0
experimental    motivated   4   unknown         0.000000    0
experimental    attitudeBefore  1   negative       -0.241500    0
experimental    attitudeBefore  2   neutral         0.000000    0
experimental    attitudeBefore  3   neutral         0.000000    0
experimental    attitudeBefore  4   unknown         0.000000    0

出力ダンプ

以下に出力します。

structure(list(level = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L), .Label = "experimental", class = "factor"), question = structure(c(2L, 
2L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("attitudeBefore", "motivated"
), class = "factor"), user = structure(c(1L, 2L, 3L, 4L, 1L, 
2L, 3L, 4L), .Label = c("1", "2", "3", "4"), class = "factor"), 
sentiment = structure(c(3L, 3L, 1L, 4L, 1L, 2L, 2L, 4L), .Label = c("negative", 
"neutral", "positive", "unknown"), class = "factor"), score = c(0.148024, 
0.244452, -0.00421, 0, -0.2415, 0, 0, 0), mixed = c(0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L)), .Names = c("level", "question", 
"user", "sentiment", "score", "mixed"), row.names = c(NA, -8L
), class = "data.frame")
4

1 に答える 1