[解決済み] R: 重複する 'row.names' を数値データフレームに設定する。
質問
オリジナルデータフレーム
diasyhoras
には3つのカラムがあります。
a) "Dia"、"Visitas"、"Hora"。
Dia"列を取り出し、その値をrownamesとして配置する必要があります。
str(diasyhoras)
'data.frame': 175 obs. of 3 variables:
$ Dia : Factor w/ 7 levels "Domingo","Jueves",..: 1 3 4 5 2 7 6 1 3 4 ...
$ Visitas: num 271 493 787 853 285 712 782 16 157 734 ...
$ Hora : int 0 0 0 0 0 0 0 1 1 1 ...
最終的な目標は、新しい df (数値のみ) を使ってヒートマップを作成することです。
d3heatmap
Rstudioのライブラリ(このパッケージに関するチュートリアルは一つも見つからなかったので、私はベストを尽くしています)。
ということで
d3heatmap
には、最初の引数は "数値行列 x に NA が含まれない限り TRUE がデフォルトであるべきだと書かれています。
試してみました。
1. diasyhoras2 <- diasyhoras[,-1] #Removes the "Dia" column and creates a new df.
2. rownames(diasyhoras2) <- diasyhoras[,1]
しかし、ステップ2では、quot;Dia"カラムに重複した値があるため、このエラーが表示されます。
Error in `row.names<-.data.frame`(`*tmp*`, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘Domingo’, ‘Jueves’, ‘Lunes’, ‘Martes’, ‘Miércoles’, ‘Sábado’, ‘Viernes’
UPDATE 1:
これは不可能であり、その必要もなかった。私が必要としたのは、ヒートマップへのフィードのためにデータフレームを "long" から "wide" に変換することです(quot;long" を使用)。
reshape2
). 基本的なRを使ってそれをやってみるのはいい練習になりました。
どのように解決するのですか?
を使用することができます。
make.names(..., unique = TRUE)
一意な行名を取得するために
rownames(diasyhoras2) <- make.names(diasyhoras[,1], unique = TRUE)
名前に何が起こるかの簡単な例です ...
rep(month.abb[1:2], 3)
# [1] "Jan" "Feb" "Jan" "Feb" "Jan" "Feb"
make.names(rep(month.abb[1:2], 3), unique = TRUE)
# [1] "Jan" "Feb" "Jan.1" "Feb.1" "Jan.2" "Feb.2"
残念ながら、日数をデータフレームの行名として使用したい場合、これを回避する方法はありません。 Rでは、エラーにあるように、データフレームでは行名の重複は許されません。 しかし、マトリックスでは許可されているので、そちらを使用した方がよいでしょう。 私は
d3heatmap
パッケージを使用しているため、行列を使用した場合に希望する結果が得られるかどうかについては、お答えできません。
x <- data.frame(a = rep(month.abb[1:2], 2))
rownames(x) <- x$a
# Error in `row.names<-.data.frame`(`*tmp*`, value = value) :
# duplicate 'row.names' are not allowed
# In addition: Warning message:
# non-unique values when setting 'row.names': ‘Feb’, ‘Jan’
m <- as.matrix(x)
rownames(m) <- x$a
m
# a
# Jan "Jan"
# Feb "Feb"
# Jan "Jan"
# Feb "Feb"
関連
-
[解決済み】Rの整数オーバーフローとは何ですか、そしてどのように起こるのですか?
-
[解決済み] データフレームを結合(マージ)する方法(内側、外側、左側、右側)
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] 情報を損なわずに因数を整数値に変換するには?
-
[解決済み] リストをデータフレームに変換する
-
[解決済み] データフレームのリストを行単位で1つのデータフレームに結合する
-
[解決済み】サブセットされたデータフレーム内の未使用の因子レベルを削除する
-
[解決済み】データフレームから特定の列を抽出する
-
[解決済み】データフレームのカラムを数値型に変換する方法は?
-
[解決済み】データフレームから数値列のみを選択する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み】エラー:ベクターメモリの枯渇(制限に達したか) R 3.5.0 macOS
-
[解決済み] テスト
-
[解決済み】GLM解析での警告
-
[解決済み】 colMeans(x, na.rm = TRUE) のエラー : KNN分類では 'x' は数値でなければならない
-
[解決済み】データのマージ - fix.by(by.x, x)のエラー)
-
[解決済み】ggplotのエラー。関数型オブジェクトのスケールを自動的に選択する方法がわかりません。
-
[解決済み】r Error dim(X) must have a positive length?
-
[解決済み】 .subset2(x, i, exact = exact)のエラー:Rの添え字が範囲外である。
-
[解決済み】行列式で「数値/複雑な行列/ベクトルの引数を必要とする」というエラーが発生する?