別のデータフレームの下部に追加するのが困難です。
1行5列の1つのデータフレーム(DF1と呼びましょう)があります。 50行5列の別のデータフレーム(DF2と呼ぶことにします)があります。私は両方のデータフレーム間の列が一致するように設定しました-それらは同じ列を持っています。実際、DF1はDF2に基づく計算です。
DF1は次のようになります。
row.names pt1 pt2 pt3 pt4
calc 0.93 0.45 0.28 0.54
DF2は次のようになります。
row.names pt1 pt2 pt3 pt4
SNP1 AA AG AG AA
SNP2 CT CT TC CC
SNP3 GG CG CG <NA>
SNP4 AA GG AG AA
SNP5 <NA> <NA> <NA> <NA>
DF1は、実際のデータポイントの数(欠落していない値の数)を可能な値の総数で割ったものです。
SO .. DF1をDF2の下部に追加して、次のようにします。
row.names pt1 pt2 pt3 pt4
SNP1 AA AG AG AA
SNP2 CT CT TC CC
SNP3 GG CG CG <NA>
SNP4 AA GG AG AA
SNP5 <NA> <NA> <NA> <NA>
calc 0.93 0.45 0.28 0.54
使ってみたところ
both.dfs <- rbind(DF1, DF2) # DF1 is first here
DF1はDF2の最初の行です。最後の行になる必要があります。
使ってみたところ
both.dfs <- rbind(DF2, DF1) # DF2 is first here
エラーが発生します:
Warning messages:
1: In `[<-.factor`(`*tmp*`, iseq, value = 0.84) :
invalid factor level, NAs generated
2: In `[<-.factor`(`*tmp*`, iseq, value = 0.84) :
invalid factor level, NAs generated
3: In `[<-.factor`(`*tmp*`, iseq, value = 0.84) :
invalid factor level, NAs generated
4: In `[<-.factor`(`*tmp*`, iseq, value = 0.74) :
invalid factor level, NAs generated
私はマージを試みました、私はDF2に新しい行を追加してからDF2の値をサブバイしました。助けが必要です!誰でも?
これはあなたがすべきことです:
DFtranspose <- cbind(t(DF1[2, ]), t(DF2))
rownames(DFtranspose) <- DF1[1, ]
私はコメントに同意します。これはおそらく悪い考えですが、ここではその方法を示します。
まず第一に、リストベースのdata.frameは、このようにうまく組み合わせることはできません。データを変換したい場合は、それらを行列に変換した方がよいでしょう。データフレームの行ごとに単一のタイプを選択する必要があることに注意してください。文字にバインドされている場合、数字を数字として保持することはできません。すべてをキャラクターとして扱いたい場合は、これを試してください:
> df1 <- data.frame(pt1="a", pt2="b", row.names=1)
> rownames(df1) <- "e"
> df2 <- data.frame(letters[1:4], pt1=1:4, pt2=2:5, row.names=1)
> rbind(as.matrix(df2), as.matrix(df1))
pt1 pt2
a "1" "2"
b "2" "3"
c "3" "4"
d "4" "5"
e "a" "b"
データフレームを処理している限り、rbind()を使用できます。
bothdfs <- rbind(df1, df2)
列名は自動的に保持されます。