我在将一个添加到另一个数据框的底部时遇到困难。
我有一个具有1行5列的数据帧(我们称之为DF1)。我有另一个数据框(叫它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应该是实际数据点的数量(不丢失的值数量)除以可能值的总数。
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)
列名将自动保留。