GNU R - 如何将两个不同大小的data.frames拼接在一起

时间:2017-02-05 16:11:39

标签: r list dataframe

我的数据框架" Baeume"是一个很大的树木清单。 每棵树都有一些数字和一些相应的房子。 由于一棵树可以有几个相应的房屋,所以可以有几排,有一个tonumber和不同的房屋。 使用下面的代码计算,列表中出现了多少次treenumber - 这给了我每棵树相应房屋的数量。

Baeume <- read.table(file="C:\\SecondFinal.txt",header = TRUE, sep=";", dec = ".")

attach(Baeume)

a <- rle(Baeume[["IN_FID"]])

b <- data.frame(number=a$values, n=a$lengths)

所以现在我得到了我想要的信息 - 有多少房子对应每个treenumber。

现在我想在原版&#34; Baeume&#34;上创建一个新专栏。 dataframe每行显示每个treenumber对应房屋的数量。

但是,自从我的数据框架&#34; Baeume&#34;和&#34; b&#34;有不同的长度,我不能使用&#34;追加&#34; - 命令。

我怎样才能告诉R在每个tonumber之后写入每一行中已计入的值&#34; b&#34;?

例如: Treenumber 605出现在15行中,所以R应写出&#34; 15&#34;在树605的每一行中新创建的列中等等......

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

只需使用函数merge(),这就是你想要的。

答案 1 :(得分:0)

拥有样本数据会使这更容易回答。但你可以做到以下几点:

库(dplyr)

trees_summary <- trees %>%
    group_by(treenumber) %>%
    summarise(Count = n())

trees2 <- trees %>%
    left_join(trees_summary, by = "treenumber")

第一个新的df是按照treenumber计算数据的摘要,例如

treenumber   Count
tree 605     15
tree 478     7

然后创建tree2 df的第二个部分将执行left_join(或合并),

Treenumber    Count
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 605      15
tree 478      7
tree 478      7
tree 478      7
tree 478      7
tree 478      7
tree 478      7
tree 478      7