Вот два способа. Первый способ создает dimnames для матрицы, которая должна быть создана, а затем переводит данные в матрицу, переносит ее и преобразует ее в кадр данных. Второй способ создает список, состоящий из переменных года и месяца, и использует это, чтобы позднее преобразовать в фрейм данных и добавить имена.
# create test data
set.seed(123)
tt <- ts(rnorm(12*5, 17, 8), start=c(1981,1), frequency = 12)
1). Это решение требует, чтобы у нас целые последовательные годы
dmn <- list(month.abb, unique(floor(time(tt))))
as.data.frame(t(matrix(tt, 12, dimnames = dmn)))
Если нас не интересуют красивые имена, это просто as.data.frame(t(matrix(tt, 12)))
.
Мы могли бы заменить dmn<-
line со следующей более простой строкой, используя комментарий @ thelatemail:
dmn <- dimnames(.preformat.ts(tt))
2) tapply. Более общее решение с использованием tapply
:
tapply(tt, list(year = floor(time(tt)), month = month.abb[cycle(tt)]), c)
Если нас не интересуют имена, мы можем заменить month.abb[cycle(tt)]
только на cycle(tt)
.
Примечание: To инвертируйте это, предположим, DF
- это любое из решений в области данных выше. Затем попробуйте:
ts(c(t(DF)), start = 1981, freq = 12)
.*\bEU\b.*
public static void main(String[] args) {
String regex = ".*\\bEU\\b.*";
String text = "EU is an acronym for EUROPE";
//String text = "EULA should not match";
if(text.matches(regex)) {
System.out.println("It matches");
} else {
System.out.println("Doesn't match");
}
}
Используйте шаблон с границами слов :
String str = "I am in the EU.";
if (str.matches(".*\\bEU\\b.*"))
doSomething();
Взгляните на документы для Pattern
.
Вы можете сделать что-то вроде
String str = "I am in the EU.";
Matcher matcher = Pattern.compile("\\bEU\\b").matcher(str);
if (matcher.find()) {
System.out.println("Found word EU");
}