我对R比较陌生,我似乎无法将列表标准应用于data.frame,我正在尝试总结。我一直在阅读一些不同的帖子,但他们似乎只关注一个级别的分组,而不是第二个。
假设我的df看起来像这样(我的实际数据框要大得多。有35种不同的“代码”和大约20种不同的“颜色”)
[Export ("automaticallyNotifiesObserversForKey:")]
public static new bool AutomaticallyNotifiesObserversForKey (string key) => false;
bool _checkValue;
[Export("CheckValue")]
public bool CheckValue
{
get { return _checkValue; }
set
{
WillChangeValue("CheckValue");
_checkValue = value;
DidChangeValue("CheckValue");
}
}
public override void ViewDidLoad ()
{
base.ViewDidLoad();
this.AddObserver("CheckValue", NSKeyValueObservingOptions.New, o =>
{
Console.WriteLine($"Observer triggered for {o}");
});
CheckValue = false;
理想情况下,我想创建一个汇总表,使我能够按代码对数据进行分组(我已成功使用Group by和Split进行此操作),但我还想创建一个值的总和按标准“颜色”。目前,我只能通过逐个运行标准来实现这一目标。
到目前为止,我已经能够做到这一点:
Code Color Value
[1] A Red 10
[2] A Blue 15
[3] A Red 5
[4] B Green 20
[5] B Red 15
[6] C Green 10
dfsummary2中的结果是:
#this gives me the total value by each code, like a pivot or a sumif
dfsummary <-df %>% group_by(Code) %>% summarise (total = sum(Value))
#then I was able to come up with this to give me, by Code, value by Color.
dfsummary2 <- df %>% filter(Color == "Red") %>% group_by(Code)
%>% summarise(sumRed = sum(Value))
我想要完成的是为所有“颜色”创建一个数据框,而不必单独指定每个颜色。
我想要的输出,我们称之为dfsummaryall,看起来像:
Code sumRed
[1] A 15
[2] B 15
[3] C 0
这是我难倒的地方。我可以单独运行每一个,然后将它们合并到一个表中,但是我想找到一种在apply函数中工作的方法(lapply,我会想)。这是我绝对是新手的地方。
到目前为止我的尝试,这是我确定我非常错误的地方,就像这样:
Code sumRed sumBlue sumGreen
[1] A 15 15 0
[2] B 15 0 20
[3] C 0 0 10
我知道在“总结(x == sum(MktValue)”部分中确实存在一个问题,但我真的很难过如何解决这个问题。
真正感谢任何帮助!
答案 0 :(得分:0)
评论中的用户 duckmayr :
df %>% group_by(Code, Color) %>% summarise(Sum = sum(Value)) %>% tidyr::spread(Color, Sum, fill = 0)
这完全符合我的目的。