Используя aggregate
:
aggregate(x$Frequency, by=list(Category=x$Category), FUN=sum)
Category x
1 First 30
2 Second 5
3 Third 34
(вложение комментария @thelatemail), aggregate
также имеет интерфейс формулы
aggregate(Frequency ~ Category, x, sum)
Или, если вы хотите для объединения нескольких столбцов вы можете использовать нотацию .
(работает для одного столбца тоже)
aggregate(. ~ Category, x, sum)
или tapply
:
tapply(x$Frequency, x$Category, FUN=sum)
First Second Third
30 5 34
Используя эти данные:
x <- data.frame(Category=factor(c("First", "First", "First", "Second",
"Third", "Third", "Second")),
Frequency=c(10,15,5,2,14,20,3))
В зависимости от того, что Вы ищете, существует Различия между.NET Компактная Платформа и статьей Framework .NET о MSDN.
Из списка Продавцов Mitchel они - некоторые характеристики, которые делают Компактный progreamming... интересным.
общеязыковая среда выполнения для.NET Компактная Платформа составляет приблизительно 12 процентов размер полной общеязыковой среды выполнения Платформы.NET.
функциональность текущего каталога не присутствует в операционной системе Windows Embedded CE.
Windows Embedded CE разрешает имя файла, которое указано без информации о пути, как являющейся в корневом каталоге устройства, не в каталоге приложения.
.NET Компактная Платформа обрабатывает строки Универсального идентификатора ресурса (URI), снабженные префиксом file:// по-другому по сравнению с полной Платформой.NET.
из-за размера и соображений производительности.NET Компактная Платформа не поддерживает двоичное использование сериализации BinaryFormatter или использование сериализации SOAP SoapFormatter.
Не все опции сокета поддерживаются.
, поскольку устройство ввод-вывод происходит в RAM, файл и атрибуты каталога не могут быть установлены или получены доступ.
<час>Консоль только обеспечивается в опции поставщика оборудования.
Только 12% Платформы.NET. Я умно выяснил, что означает, что 88% отсутствуют. И Вы, вероятно, захотите часть его.
Довольно замечательный, что так много опущено или искажено, потому что это не впишется в несколько сотен МБ; по сравнению с обычно меньше чем 10 МБ для классических Мобильных устройств.
Я заметил некоторые различия, когда я должен был портировать приложение CF на полную платформу .NET.
стандартный шрифт для маркировок и treeviews в CF был больше
, Когда маркировка отключена в CF, это просто grayed (полный .NET framewark обрисовывает в общих чертах текст с другим цветом)
Битовые массивы (все производные классы Изображения действительно) ведут себя по-другому в , как их ресурсы очищены .
Пути блока возвращаются в другом формате на рабочем столе от
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
, Это возвращает обычный тракт под Победой CE, но дает URL (file:///c:/...) на настольной платформе. Свойство
System.Reflection.Assembly.GetExecutingAssembly().Location
возвращает обычный тракт (C:...) в настольной платформе, но не доступно вообще в Компактной Платформе.
Вот свойство, которое возвращает папку, в которой расположено Ваше приложение:
public static string AppFolder
{
get {
#if !WindowsCE && !PocketPC
string exeFile = System.Reflection.Assembly.GetExecutingAssembly().Location;
#else
// This returns a normal path under CE, but gives a URL (file:/...) on the desktop
string exeFile = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase;
if (exeFile.StartsWith("file:///"))
exeFile = exeFile.Substring("file:///".Length);
#endif
return System.IO.Path.GetDirectoryName(exeFile);
}
}