我有兩個數據幀。R在另一個數據幀上應用數據幀
set.seed(1234)
df <- data.frame(
id = factor(rep(1:24, each = 10)),
price = runif(20)*100,
quantity = sample(1:100,240, replace = T)
)
df2 <- data.frame(
id = factor(seq(1:24)),
eq.quantity = sample(1:100, 24, replace = T)
)
我想用df2$eq.quantity
找到最接近的絕對值相比df$quantity
,由因子變量,id
。我想爲的df2
這樣做,並將其綁定到一個新的數據幀中,稱爲results
。
我能做到這樣每個單獨ID:
d.1 <- df2[df2$id == 1, 2]
df.1 <- subset(df, id == 1)
id.1 <- df.1[which.min(abs(df.1$quantity-d.1)),]
這將給予解決:
id price quantity
1 66.60838 84
但我真的很希望能夠用更聰明的解決方案,並也收集到一個數據幀的結果,所以如果我手動這樣做它會看起來有點像這樣:
results <- cbind(id.1, id.2, etc..., id.24)
我給這個問題一個好名字時遇到了一些麻煩?
你確定你的 「解決方案」 是正確的? – nsheff
您的權利,我在設置種子之前執行了其中一個數據集....現在在帖子中更改了它。 – NoThanks