Heatmap.2でエラーを受け取り、ここで同様のエラーを見つけました R:knnImputation Giving Error しかし、まだ答えがありません。私はその問題を理解できなかった。私はこの世界に不慣れです、何か間違いがあれば事前に申し訳ありません。
144行177列のデータフレームdf
があり、2005-2016
とtimeAverage
関数openair package
の間の年の月平均を示しています。
ここにdf
の小さな例があります:
date Year Month Adana-Catalan Adana-Dogankent Adana-Meteoroloji
2008/09/01 2008 9 NaN NaN NaN
2008/10/01 2008 10 NaN NaN 1.7948718
2008/11/01 2008 11 NaN NaN 2.0909091
2008/12/01 2008 12 1.2694064 12.2384106 0.7272727
2009/01/01 2009 1 2.3150358 12.7479339 10.3779762
2009/02/01 2009 2 2.8241107 18.4320175 2.4494949
2009/03/01 2009 3 2.0401606 8.4597523 1.6529412
2009/04/01 2009 4 1.8604651 4.8560000 1.1267606
2009/05/01 2009 5 2.1087719 1.8202247 NaN
2009/06/01 2009 6 4.0695103 2.1463415 1.1111111
2009/07/01 2009 7 5.4016393 8.1298905 NaN
2009/08/01 2009 8 0.1313869 16.9874411 NaN
2009/09/01 2009 9 NaN 5.3753943 NaN
2009/10/01 2009 10 1.6626506 8.8000000 1.8388889
2009/11/01 2009 11 1.4177632 NaN 3.9879154
2009/12/01 2009 12 0.9644128 NaN 5.0281457
2010/01/01 2010 1 0.2608696 4.0898876 3.1981424
2010/02/01 2010 2 0.7619048 NaN 4.3169811
数値以外の列を削除します。
df.monthly <- df[,-c(1:3)] #remove non-numeric columns
df.monthly.un <- unlist(df.monthly) #unlist the list
df.monthly.un[is.nan(df.monthly.un)] <- -999 #replace NaNs with -999
monthly.dim <- dim(df.monthly)
monthly.frame <- matrix(df.monthly.un, monthly.dim) #convert unlist to matrix
次に、距離行列を計算し、樹状図を作成しました。最後に、heatmap.2
を使用して、樹状図を含むヒートマップを作成しました。
monthly.dist <- dist(monthly.frame)
monthly.hclust <- hclust(monthly.dist, method="complete")
monthly.dist2 <- dist(t(monthly.frame))
colClust <- as.dendrogram(hclust(monthly.dist2, method="complete"))
rowClust <- as.dendrogram(monthly.hclust)
colpalette <- colorRampPalette(c("red","blue","green"))(n=100)
heatmap.2(monthly.frame, scale="none",
col=colpalette, trace= "none", cexRow=0.6, cexCol=1,
cex.main=0.7, key=T, Rowv=rowClust, labRow=df[,1],
main=expression("2005-2016 SO"[2] * " (ug/m"^3*")"))
ただし、コードを実行すると、次のエラーが発生します。
Error: Column indexes must be at most 1 if positive, not 22, 23, 24, 25, 21, 18, 19, 20, 16, 17, 12, 10, 11, 15, 13, 14, 3, 9, 8, 4, 7, 5, 6, 2, 124, 125, 121, 122, 123, 133, 132, 131, 134, 135, 126, 129, 127, 128, 130, 136, 137, 143, 144, 141, 142, 138, 139, 140, 57, 58, 55, 56, 42, 47, 41, 40, 36, 38, 37, 39, 46, 43, 44, 45, 34, 35, 26, 27, 28, 29, 30, 31, 32, 33, 59, 54, 53, 48, 49, 50, 51, 112, 116, 117, 114, 115, 88, 89, 52, 60, 63, 70, 75, 73, 74, 79, 77, 76, 78, 66, 67, 62, 65, 71, 64, 61, 72, 97, 87, 85, 86, 90, 98, 91, 83, 84, 92, 94, 96, 93, 95, 68, 69, 82, 80, 81, 113, 110, 111, 109, 118, 119, 120, 101, 105, 103, 104, 99, 106, 100, 102, 107, 108
このエラーが発生する理由はありますか?前もって感謝します!
このリンクは、KNNを別の方法で行う方法を示しています: https://www.youtube.com/watch?v=u8XvfhBdbMw
また、knnImputation(data)が機能しない理由がわかりません。データフレームをいじってみましたが、現在は機能していますが、なぜ機能するのかはわかりません。
私がしたことは:
mydata <- read_Excel("icecreamdata.xlsx") #Here I'm importing my data
newdata <- data.frame() #I've created a blank data frame
newdata <- data.frame(mydata) #I'm putting the data I want into this new data frame
anyNA(newdata) #Checking for missing data. TRUE = yes, data is missing. FALSE = no, data is not missing.
fixeddata <- knnImputation(newdata) #Imputing data to a new object
anyNA(fixed data)
FALSE =欠測データはありません
どちらも機能しますが、エラーが発生した理由を専門家から知りたいと思います。正の場合など、列インデックスは最大で1でなければなりません。
今日問題が発生し、tbl
オブジェクトをdata.frame
オブジェクトに変換する必要があることがわかりました!!これは、異なるパッケージに互換性がないという1つの嫌な点です。
#check your df class,I think your df is actually a tbl object
class(df)
df_new <- as.data.frame(df)