Одним из вариантов является подстановка данных по номеру столбца, а затем использовать метод formula
из aggregate
aggregate(.~ cbind(Tower_Name = Tower),
Software[c(7, match('Tower', names(Software)))], FUN = sum)
Ключ - это подмножество столбцов «Программного обеспечения». Здесь мы уже знаем индекс столбца 'Amount' как 7, объединенный с соответствующим индексом столбца 'Tower', выводит двухкадровый кадр данных. В методе формулы мы можем указать .
для всех остальных столбцов. Здесь это будет «Количество» или вариации его имени
С tidyverse
это будет проще, поскольку есть summarise_at
, которые могут принимать либо имена столбцов, либо индекс
library(tidyverse)
Software %>%
group_by(Tower) %>%
summarise_at(7, sum)
На самом деле C# (язык) ничего не знает о сериализации, но.NET (платформа) обеспечивает много путей... XmlSerializer
, BinaryFormatter
, DataContractSerializer
(.NET 3.0) - или также существует несколько сделанных на заказ платформ сериализации.
То, чтобы использовать, зависит от Ваших требований; BinaryFormatter
прост в использовании, но записывает информацию о метаданных блока в файл - создание его непортативный (Вы не могли открыть его в Java, например). XmlSerializer
и DataContractSerializer
являются, прежде всего, находящимися в xml, делая это довольно портативным, но довольно большой, если Вы не сжимаете его.
Некоторые собственные сериализаторы являются промежуточными между двумя; protobuf-сеть является бинарным форматтером (так очень плотные данные), но который следует портативному стандарту для формата данных (протокол Google буферизует спецификацию). Полезно ли это, зависит от Вашего сценария.
Типичный код (сюда использование XmlSerializer
):
XmlSerializer ser = new XmlSerializer(typeof(Foo));
// write
using (var stream = File.Create("foo.xml"))
{
ser.Serialize(stream, foo); // your instance
}
// read
using (var stream = File.OpenRead("foo.xml"))
{
Foo newFoo = (Foo)ser.Deserialize(stream);
}
Взгляд на Сериализацию и интерфейс ISerializable
Это позволяет Вам сохранять состояние объекта в портативной форме.
Необходимо также рассмотреть рассмотрение Linq к SQL (или Платформа Объекта) для отображения O/R и хранить данные в базу данных (SQL CE, SQL Express).
Если Вы хотите, чтобы Ваши данные были в формате XML, существует XmlSerializer.
Править: По некоторым причинам я был downvoted для предложения этого, потому что XmlSerializer не может сериализировать Словарь.
Для обхождения этой проблемы, можно всегда настраивать процесс сериализации как это
Я создал дополнительный метод, который берет объект и создает строку xml для Вас, все, что необходимо сделать, сохраняют/загружают из файла. XmlSerialisation