【发布时间】:2019-04-26 13:48:45
【问题描述】:
我有两个示例数据框(z1 和 z2),如下所示:
City1 = c(1,1,1,2,2,3,3,3)
z1 = data.frame(City1)
City2 = c(1,1,1,1,1,2,3,3)
Tax2=c(16,93,96,44,67,73,12,10)
z2 = data.frame(City2,Tax2)
我想做的是从 z1 中的 z2 获取给定城市(分别为 City1 和 City2)的 Tax2 的前“n”个值。问题是两个数据框中的观察次数不一样。
案例 1:
在 nrow(z2) >= nrow(z1) 的情况下,我想取顶部的 nrow(z1) 数据并将它们放入 z1 中。
例如:对于城市 1:nrow(z2) = 5 和 nrow(z1)=3,在这种情况下,我想从 z2 中查找 Tax2 的前 3 个值并将它们组合到 z1 中。这可以通过 City1 的代码来实现:
cit=1
z1_data=z1[z1$City1==cit,]
z2_data=z2[z2$City2==cit,]
z2_data_sort=z2_data[order(z2_data$Tax2,decreasing = T),]
for (i in 1:nrow(z1_data)){
z1_data[i,"Tax_lookup"]=z2_data_sort[i,"Tax2"]
}
案例 2:
但是当反之为真nrow(z2)
如果我为 City==3 运行上述代码,我得到的输出是:
City1 Other_var Tax_lookup
3 f 12
3 g 10
3 h NA
我想要的输出是:
City1 Other_var Tax_lookup
3 f 12
3 g 10
3 h 10 ---- **This value is repeated**
我将如何在 R 中做到这一点?任何帮助将不胜感激。谢谢。
【问题讨论】:
-
只需复制并粘贴您的输出。除了情节,通常不鼓励使用图像。请编辑删除图像并简单地复制粘贴。
-
感谢@NelsonGon 指出这一点。我已经编辑了问题。
标签: r data-manipulation