簡體   English   中英

將一個數據幀添加到 R 中另一個數據幀的末尾

[英]Adding a one dataframe to the end of another data.frame in R

我很難將一個添加到另一個數據框的底部。

我有一個數據框(我們稱之為 DF1),它有 1 行和 5 列。 我有另一個數據框(我們稱之為 DF2),它有 50 行和 5 列。 我將它設置為兩個數據幀之間的列匹配 - 它們具有相同的列。 實際上,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 應該是實際數據點的數量(不丟失的值的數量)除以可能值的總數。

所以..我想將 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, ]

只要您正在處理數據幀,就可以使用 rbind():

bothdfs <- rbind(df1, df2)

列名將自動保留。

我同意這些評論,這可能是一個壞主意,但您可以這樣做。

首先,與基於列表的 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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM