Вы можете сделать это ...
var string = 'This is\n' +
'a multiline\n' +
'string';
Где эта функция year()
из?
Вы также можете использовать пакет reshape2
для этой задачи:
require(reshape2)
df_melt <- melt(df1, id = c("date", "year", "month"))
dcast(df_melt, year + month ~ variable, sum)
# year month x1 x2
1 2000 1 -80.83405 -224.9540159
2 2000 2 -223.76331 -288.2418017
3 2000 3 -188.83930 -481.5601913
4 2000 4 -197.47797 -473.7137420
5 2000 5 -259.07928 -372.4563522
Поздно к партии, но недавно нашел другой способ получить сводную статистику.
library(psych)
describe(data)
Будет выводиться: среднее, мин, максимальное, стандартное отклонение, n, стандартная ошибка, эксцесс, асимметрия, медиана и диапазон для каждой переменной.
Да, в вашем formula
вы можете cbind
числовые переменные быть агрегированными:
aggregate(cbind(x1, x2) ~ year + month, data = df1, sum, na.rm = TRUE)
year month x1 x2
1 2000 1 7.862002 -7.469298
2 2001 1 276.758209 474.384252
3 2000 2 13.122369 -128.122613
...
23 2000 12 63.436507 449.794454
24 2001 12 999.472226 922.726589
См. ?aggregate
, аргумент formula
и примеры.
.
на LHS. aggregate(. ~ year + month, df1, sum, na.rm = TRUE)
. В этом примере sum
для "даты" не имеет смысла, хотя ....
– A5C1D2H2I1M1N2O1R2T1
21 March 2016 в 04:53
С пакетом dplyr
вы можете использовать функции summarise_all
, summarise_at
или summarise_if
для одновременного объединения нескольких переменных. Для примера набора данных вы можете сделать это следующим образом:
library(dplyr)
# summarising all non-grouping variables
df2 <- df1 %>% group_by(year, month) %>% summarise_all(sum)
# summarising a specific set of non-grouping variables
df2 <- df1 %>% group_by(year, month) %>% summarise_at(vars(x1, x2), sum)
df2 <- df1 %>% group_by(year, month) %>% summarise_at(vars(-date), sum)
# summarising a specific set of non-grouping variables based on condition (class)
df2 <- df1 %>% group_by(year, month) %>% summarise_if(is.numeric, sum)
Результат двух последних опций:
year month x1 x2
<dbl> <dbl> <dbl> <dbl>
1 2000 1 -73.58134 -92.78595
2 2000 2 -57.81334 -152.36983
3 2000 3 122.68758 153.55243
4 2000 4 450.24980 285.56374
5 2000 5 678.37867 384.42888
6 2000 6 792.68696 530.28694
7 2000 7 908.58795 452.31222
8 2000 8 710.69928 719.35225
9 2000 9 725.06079 914.93687
10 2000 10 770.60304 863.39337
# ... with 14 more rows
Примечание: summarise_each
устарел в пользу summarise_all
, summarise_at
и summarise_if
.
Как упоминалось в моем комментарии выше , вы также можете использовать функцию recast
из reshape2
- пакет:
library(reshape2)
recast(df1, year + month ~ variable, sum, id.var = c("date", "year", "month"))
, который даст вам тот же результат.
recast
(также изreshape2
) объединяет функцииmelt
иdcast
в один ход для таких задач:recast(df1, year + month ~ variable, sum, id.var = c("date", "year", "month"))
– Jaap 13 May 2016 в 06:17