我有两个这样的示例数据帧(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中执行此操作?任何帮助将不胜感激。谢谢。