我是编程领域的新手,需要找到在R中完成以下逻辑的方法 我有一个data.frame包含4个变量
df_1
Item Var1 Var2 Var3
111 2 3 4
222 6 2 8
333 7 1 4
444 3 2 7
等等。我有1300件这样的东西。 我需要做的是创建一个循环来将值替换为另一个data.frame df_2,其平均值为相同项目代码的Avg_values
df_2
Item Avg_Value
111 3
222 2
333 7
444 5
但是,它应该只替换var1,var2,var3中那些大于df_2的Avg_values的值。如果它小于Avg_values那么它应该保持不变 我尝试创建一个函数并用于循环和替换命令来更改值,但它不起作用。有人可以帮忙吗?
答案 0 :(得分:0)
我们应该考虑Item
吗?如果我们必须,那么:
t(apply(merge(df1,df2),1,function(x)c(x[1],replace(y<-x[-1],y>=x[5],x[5]))))
Item Var1 Var2 Var3 Avg_Value
[1,] 111 2 3 3 3
[2,] 222 2 2 2 2
[3,] 333 7 1 4 7
[4,] 444 3 2 5 5
如果您愿意,可以删除最后一列: