Получить счет или тот же набор элементов в R-транзакциях arules [duplicate]

<\s*(\w+)[^/>]*>

Объясненные детали:

<: начальный символ

\s*: он может иметь пробелы перед именем тега (уродливым, но возможным).

(\w+): теги могут содержать буквы и цифры (h1). Ну, \w также соответствует «_», но это не мешает, я думаю. Если любопытное использование ([a-zA-Z0-9] +).

[^/>]*: все, кроме > и /, до закрытия >

>: закрытие >

UNRELATED

И для парней, которые недооценивают регулярные выражения, говоря, что они только настолько сильны, как обычные языки:

anbanban, который не является регулярный и даже контекстно-свободный, можно сопоставить с ^(a+)b\1b\1$

Обратное обращение FTW !

76
задан Henrik 29 January 2017 в 11:58
поделиться

11 ответов

Существует также df2 <- count(x, c('Year','Month')) (пакет plyr)

38
ответ дан geotheory 16 August 2018 в 02:17
поделиться
  • 1
    Есть ли способ агрегировать переменную и делать подсчет тоже (например, 2 функции в агрегировании: среднее + количество)? Мне нужно получить среднее значение столбца и количество строк для одного и того же значения в другом столбце – sop 15 May 2015 в 14:06
  • 2
    Я cbind получил результаты aggregate(Sepal.Length ~ Species, iris, mean) и aggregate(Sepal.Length ~ Species, iris, length) – geotheory 16 May 2015 в 22:28
  • 3
    Я сделал это, но кажется, что я получаю 2 раза за каждый столбец, кроме агрегированного; поэтому я сделал слияние на них, и, похоже, все в порядке – sop 18 May 2015 в 07:20
  • 4
    Я не знаю, но это тоже может быть полезно ... df %>% group_by(group, variable) %>% mutate(count = n()) – Manoj Kumar 14 December 2016 в 18:57
  • 5
    Да dplyr - лучшая практика. – geotheory 15 December 2016 в 03:07

Следуя предложению Джошуа, вы можете подсчитать количество наблюдений в вашем фрейме df, где Year = 2007 и Month = Nov (если они столбцы):

nrow(df[,df$YEAR == 2007 & df$Month == "Nov"])

и с aggregate, следуя @GregSnow:

aggregate(x ~ Year + Month, data = df, FUN = length)
51
ответ дан Ben 16 August 2018 в 02:17
поделиться

Альтернативой функции aggregate() в этом случае будет table() с as.data.frame(), что также укажет, какие комбинации Год и Месяц связаны с нулевыми вхождениями

df<-data.frame(x=rep(1:6,rep(c(1,2,3),2)),year=1993:2004,month=c(1,1:11))

myAns<-as.data.frame(table(df[,c("year","month")]))

И без нулевых комбинаций

myAns[which(myAns$Freq>0),]
14
ответ дан BenBarnes 16 August 2018 в 02:17
поделиться

Создайте новую переменную Count со значением 1 для каждой строки:

df1["Count"] <-1

Затем скомпилируйте фрейм данных, суммируя по столбцу Count:

df2 <- aggregate(df1[c("Count")], by=list(year=df1$year, month=df1$month), FUN=sum, na.rm=TRUE)
16
ответ дан David Arenburg 16 August 2018 в 02:17
поделиться

Простой вариант использования с aggregate - это функция length, которая даст вам длину вектора в подмножестве. Иногда немного более надежным является использование function(x) sum( !is.na(x) ).

20
ответ дан Greg Snow 16 August 2018 в 02:17
поделиться

Мы также можем использовать dplyr.

Во-первых, некоторые данные:

df <- data.frame(x = rep(1:6, rep(c(1, 2, 3), 2)), year = 1993:2004, month = c(1, 1:11))

Теперь число:

library(dplyr)
count(df, year, month)
#piping
df %>% count(year, month)

Мы также можем используйте немного более длинную версию с трубкой и функцию n():

df %>% 
  group_by(year, month) %>%
  summarise(number = n())

или функцию `tally:

df %>% 
  group_by(year, month) %>%
  tally()
27
ответ дан Jaap 16 August 2018 в 02:17
поделиться

Решение с использованием пакета sqldf:

library(sqldf)
sqldf("SELECT Year, Month, COUNT(*) as Freq
       FROM df1
       GROUP BY Year, Month")
1
ответ дан Masoud 16 August 2018 в 02:17
поделиться

Для моих скоплений я обычно получаю желание видеть среднее и «насколько велика эта группа» (длина a.k.a.). Так что это мой удобный фрагмент для этих случаев:

agg.mean <- aggregate(columnToMean ~ columnToAggregateOn1*columnToAggregateOn2, yourDataFrame, FUN="mean")
agg.count <- aggregate(columnToMean ~ columnToAggregateOn1*columnToAggregateOn2, yourDataFrame, FUN="length")
aggcount <- agg.count$columnToMean
agg <- cbind(aggcount, agg.mean)
3
ответ дан maze 16 August 2018 в 02:17
поделиться

Старый вопрос без решения data.table. Итак, здесь идет ...

Используя .N

library(data.table)
DT <- data.table(df)
DT[, .N, by = list(year, month)]
25
ответ дан mnel 16 August 2018 в 02:17
поделиться
lw<- function(x){length(which(df$variable==someValue))}

agg<- aggregate(Var1~Var2+Var3, data=df, FUN=lw)

names(agg)<- c("Some", "Pretty", "Names", "Here")

View(agg)
-1
ответ дан nate 16 August 2018 в 02:17
поделиться

Учитывая ответ @Ben, R выдает ошибку, если df1 не содержит столбец x. Но это можно решить элегантно с помощью paste:

aggregate(paste(Year, Month) ~ Year + Month, data = df1, FUN = NROW)

Аналогичным образом его можно обобщить, если в группировке используется более двух переменных:

aggregate(paste(Year, Month, Day) ~ Year + Month + Day, data = df1, FUN = NROW)
0
ответ дан paudan 16 August 2018 в 02:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: