Ошибка при добавлении параметра trim с помощью tapply () и min () - PullRequest
1 голос
/ 30 января 2020

У меня есть фрейм данных с 4 столбцами (температура, дождь, месяц, год) и ~ 7000 строк. Я не знаю, как на самом деле опубликовать данные здесь?

В качестве упражнения я использовал tapply для построения таблицы, в которой каждая строка представляла собой год, а в каждом столбце была минимальная температура для каждого месяца. этого года. Я использовал

data <- read.table("temperatures.txt", header=T)
attach(data)
tapply(temperature,list(yr,month),min)

И это работало просто отлично. Я получил

        1    2   3    4    5    6    7    8    9   10  11   12
1987 -6.8  3.0 2.8  8.3 10.5 12.5 14.3 15.3 13.5  9.5 1.8  2.8
1988  1.8  4.8 4.3  6.0 11.0 12.5 16.3 15.0 12.3  9.3 2.3  3.3
1989  2.3  3.8 6.0  2.8 13.3 11.5 18.0 17.5 16.0 12.5 4.8  2.8
1990  4.0  6.4 1.5  7.8 12.8 13.8 17.0 18.0 14.0 10.8 3.0  1.0
and so on

Но затем я попытался добавить параметр "trim" для функции min.

tapply(temperature,list(yr,month),min, trim = 0.1)

И теперь я получаю

        1    2   3   4   5   6   7   8   9  10  11   12
1987 -6.8  0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1  0.1
1988  0.1  0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1  0.1
1989  0.1  0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1  0.1

Что я делаю неправильно? Большинство этих комбинаций год / месяц даже не имеют температуры 0,1 в наборе данных ....

1 Ответ

1 голос
/ 30 января 2020

В mean есть аргумент trim, а в min его нет. Таким образом, если мы предоставим новое значение, будет взято, чтобы вычислить min, поскольку использование min равно

min (..., na.rm = FALSE)

... может иметь n количество значений, и его можно также назвать, поэтому trim здесь ничего не вносит, кроме самого значения

min(0, 5, -2, trim = 0.1) # minimum value is -2
#[1] -2
min(0, 5, 3, trim = 0.1) # minimum is 0
#[1] 0
min(0.2, 5, 3, trim = 0.1)
#[1] 0.1

min(0.5, hello =5, trim = 0.2, trimtrim = 0.4)
#[1] 0.2

В приведенном ниже примере с mtcars все значения для 'mpg' превышают 0,1, но из-за этого эффекта возвращается 0,1

tapply(mtcars$mpg, list(mtcars$cyl, mtcars$vs), function(x) min(x, trim = 0.1))
#   0   1
#4 0.1 0.1
#6 0.1 0.1
#8 0.1  NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...