R统计、函数

R统计、函数,r,function,aggregate-functions,R,Function,Aggregate Functions,大家好! 我有以下问题。三栏: "Date" "Partner" "Costs" 01.01. GMX 100 01.01. Yahoo 150 ... R应执行以下步骤: 识别每个唯一的合作伙伴(如级别(df$partner)) 以第一个合作伙伴(如雅虎)为例,执行以下(雅虎的成本为02.01./雅虎的成本为02.01.-1 如果差值大于50%,则应将雅虎02.01的成本乘以当月所有天数-1加上雅虎第一天的成本 如果差异小于50%,则应将雅虎第一次和第二次约会的成

大家好! 我有以下问题。三栏:

"Date" "Partner" "Costs" 
01.01.  GMX       100
01.01.  Yahoo     150
...
R应执行以下步骤:

  • 识别每个唯一的合作伙伴(如
    级别(df$partner)
  • 以第一个合作伙伴(如雅虎)为例,执行以下
    (雅虎的成本为02.01./雅虎的成本为02.01.-1
  • 如果差值大于50%,则应将
    雅虎02.01的成本乘以当月所有天数-1加上
    雅虎第一天的成本
  • 如果差异小于50%,则应将雅虎第一次和第二次约会的成本之和除以2 ->乘以当前月份的所有天数
之后:

  • 拿第二个,第三个。。。合作伙伴并执行上述所有步骤 与每一个单独的伙伴
结果应是一个单独的数据框,该数据框应写入新的excel文件中:

"Date" "Partner" "Costs" 
TODAY   GMX       RESULT
TODAY   Yahoo     RESULT
...

提前非常感谢

这是一个可疑的具体问题,但在其核心我看到了一个共同的模式。您希望对每个子集执行复杂的聚合函数(不管您如何定义子集)。我经常使用以下方法:

do.call(rbind, lapply(split(your_data, your_data$subset), function(x) {...}))

首先,您将
数据帧拆分为一个数据帧列表,每个
数据$subset
的“级别”对应一个数据帧。然后将函数应用于每个子集数据帧。您需要自己实现聚合逻辑,但基本上,
x
表示该子集的所有行,并且您的函数应该返回一个新的数据帧,该数据帧按照您的意愿进行聚合。然后
do.call
rbind
将子集数据帧列表合并回一个数据帧。

这是家庭作业还是你将工作外包给SO?这是为了好玩。我想学习R中的函数和聚合,也就是说,它的目的是学习R统计学,重点是你必须付出一些努力。没有人会为你做你的项目。如果你用谷歌搜索“R unique”,你会找到第一个问题的答案。如果你仍然不知道怎么做,可以问一个特定的问题(即1个问题而不是4个问题),说明你尝试过的代码、期望的输出以及代码的输出与预期的不同。我明白了。谢谢你的评论。我确实尝试了很多,但都没有成功。但我明白你的意思了,我将发布一个带有脚本的新问题。对不起,请不要生气。我不希望smb执行我的项目。否则我不会学习->我想理解脚本中的每个符号!