Создать массив с количеством событий массива в R - PullRequest
1 голос
/ 02 апреля 2020

Это выглядит довольно просто c ... но я пытаюсь сгенерировать второй массив в R, который бы соответствовал количеству событий моего основного массива. Например, если существует 14 Age [x], которым 42, я бы хотел, чтобы Age.count [x] равнялся 14.

Так что если бы Age был [1] 10 14 14 13 14 12 10, я бы хотел, чтобы мой Age.count был [1] 2 3 3 1 3 1 2. Кажется, это должно быть действительно просто, но я еще не справился ...

Мой лучший снимок:

for (val in length(Age)) {
  Age.count[val] <- length(subset(Age, Age==val2))
}

К сожалению, он дает мне значения NA для всех, кроме первого и последние значения. Помощь

Ответы [ 3 ]

1 голос
/ 02 апреля 2020

Вы можете сделать его более компактным, но, по крайней мере, вы можете видеть, что происходит таким образом.

age = c(10, 14, 14, 13, 14, 12, 10)
counts = table(age)

i = match(age, names(counts))
counts[i]
> counts[i]
age
10 14 14 13 14 12 10 
 2  3  3  1  3  1  2 
1 голос
/ 02 апреля 2020

Простой способ - использовать ave, т. Е.

> ave(age,age,FUN = length)
[1] 2 3 3 1 3 1 2

DATA

age <- c(10, 14, 14, 13, 14, 12, 10)
1 голос
/ 02 апреля 2020

Пусть

Age = c(10, 14, 14, 13, 14, 12, 10)
X = data.frame(Age)
Test = as.data.frame(table(X)) 
Test$X = as.numeric(as.character(Test$X))
colnames(Test) = c("Age", "Frequency") 

Тогда

Result = dplyr::inner_join(X, Test)

будет работать.

...