基于具有不正确行号

时间:2018-06-14 09:38:08

标签: r

我需要使用基于第一列中值的值填充空数据框(或者在这种情况下,行名称对我来说是相同的)。所以这里有三个对象:

set.seed=11  

empty_df=data.frame(cities=c("New York","London","Rome","Vienna","Amsterdam"),
                      col.a=rep(NA,5),
                      col.b=rep(NA,5),
                      col.c=rep(NA,5))

values=rnorm(4,0,1)
to_fill=data.frame(cities=c("New York","London","Vienna","Amsterdam"),
                      col.a=values)

desired_output=data.frame(cities=c("New York","London","Rome","Vienna","Amsterdam"),
                          col.a=c(values[1],values[2],NA,values[3],values[4]),
                          col.b=rep(NA,5),
                          col.c=rep(NA,5))

第一列(可以转换为行名,使用行名称的解决方案或带有城市名称的第一列都很好)包括我想访问的一些城市和其他一些未指定的值。首先是df我想填充值,其输出是:

     cities col.a col.b col.c
1  New York    NA    NA    NA
2    London    NA    NA    NA
3      Rome    NA    NA    NA
4    Vienna    NA    NA    NA
5 Amsterdam    NA    NA    NA

第二个是我想要放入INTO空df的对象,你可以看到它缺少一行(带有“Rome”):

     cities        col1
1  New York  0.55213218
2    London  0.98907729
3    Vienna  1.11703741
4 Amsterdam -0.04616725

所以现在我想把它放在空的df中,留下NA的行不匹配:

     cities       col.a col.b col.c
1  New York -0.62731870    NA    NA
2    London -1.80206612    NA    NA
3      Rome          NA    NA    NA
4    Vienna -1.73446286    NA    NA
5 Amsterdam -0.05709419    NA    NA

我试图使用这样的最简单的合并解决方案:merge(empty_df,to_fill, by="cities")

     cities col.a.x col.b col.c     col.a.y
1 Amsterdam      NA    NA    NA -0.05709419
2    London      NA    NA    NA -1.80206612
3  New York      NA    NA    NA -0.62731870
4    Vienna      NA    NA    NA -1.73446286

当我尝试desired_output$col.a=merge(empty_df,to_fill, by="cities")时发生错误(replacement has 4 rows, data has 5)。是否有任何简单的解决方案可以放入for循环或apply

1 个答案:

答案 0 :(得分:1)

我们可以使用AND <nothing> NOT between 2900 AND 3199

match

我们empty_df$col.a <- to_fill$col.a[match(empty_df$cities, to_fill$cities)] empty_df; # cities col.a col.b col.c #1 New York 1.5567564 NA NA #2 London -0.6969401 NA NA #3 Rome NA NA NA #4 Vienna 1.3336636 NA NA #5 Amsterdam 0.7329989 NA NA col.a empty_df col.a to_fill来自match cities来自empty_df cities to_fill .zip 1}}来自lambda_function.py