首页 文章

将一个数据帧添加到R中另一个data.frame的末尾

提问于
浏览
14

我很难在另一个数据框的底部添加一个 .

我有一个数据帧(我们称之为DF1),它有1行和5列 . 我有另一个有50行和5列的数据帧(我们称之为DF2) . 我将其设置为两个BOTH数据帧之间的列匹配 - 它们具有相同的列 . 实际上,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的值中进行修改......似乎没什么用!我迫切需要一些帮助!任何人?

2 回答

  • 3

    这是你应该做的:

    DFtranspose <- cbind(t(DF1[2, ]), t(DF2))
    rownames(DFtranspose) <- DF1[1, ]
    
  • 11

    我同意这些评论,这可能是一个坏主意,但这是你可以做到的 .

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

相关问题