Как работает потолок?
Я новичок в R.
На данный момент я изучаю потолочные коды следующим образом:df4 <- data.frame(Y=rnorm(5),Z=ceiling(rnorm(5)))
Мой вопрос: что делает потолок в этом случае?
Результат для кода выше, как показано ниже:
Y Z
1 -0.5237500 0
2 -1.2548762 -1
3 0.9723432 0
4 0.1974542 1
5 1.3507062 1
(Это беспокоит меня, так как это не похоже на обычную функцию потолка для меня.)
Любая помощь и / или объяснение будет оценено.
4 ответа
Без использования какого-либо пакета, сначала создайте dataframe
случайного числа и вызвать ceiling
:
df4 <- data.frame(Y=rnorm(5))
df4$Z <-ceiling(df4$Y)
df4
Y Z
1 0.3466323 1
2 -0.3913280 0
3 -1.8246212 -1
4 -0.1052592 0
5 -1.4643682 -1
Потолок не дает ожидаемых результатов здесь, потому что вектор, произведенный в Y
отличается от того, который производится в Z
- в каждом из них вы выбираете новый набор чисел.
Что вы должны сделать, это:
library(dplyr)
df4 <- data.frame(Y=rnorm(5))
df4 <- df4 %>% mutate(Z = ceiling(Y))
По-видимому, Z=ceiling(rnorm(5))
здесь ссылаются на верхний предел значения Z / Z, который генерируется случайным образом. Он полностью независим от переменной Y. Спасибо, в любом случае.
Функция потолка всегда округляется до большего числа, что означает, что негативы округляются в направлении нуля.
В вашем коде вы генерируете два разных набора чисел, потому что генератор псевдослучайных чисел не перерабатывает старые значения для rnorm()
функция:
testcode:
set.seed(42)
df <- data.frame(Y=rnorm(5),Z=rnorm(5))
выход
Y Z
1 1.3709584 -0.10612452
2 -0.5646982 1.51152200
3 0.3631284 -0.09465904
4 0.6328626 2.01842371
5 0.4042683 -0.06271410
так потолок
df4$Z <- ceiling(df4$Z)
создает вывод
Y Z
1 1.3709584 0
2 -0.5646982 2
3 0.3631284 0
4 0.6328626 3
5 0.4042683 0
если вы хотите получить потолок Y используйте:
df4 <- data.frame(Y=rnorm(5))
df4$Z <- ceiling(df4$Y)