所以我需要创建一个定义我的' alt'变量(海拔高度)高于或低于其中位数。
我知道它应该遵循创造新事物的基本形式:
conservation$alt.factor <- conservation$alt (..????...)
但我只是在努力争取最后一点。
必须有简单的命令!
答案 0 :(得分:2)
这很简单。查找高于计算中值的值,并为新变量分配一些新值。这很容易在代码中解释:
set.seed(357)
xy <- data.frame(original = rnorm(100))
above.median <- xy$original > median(xy$original) # find values above the median
xy$new[above.median] <- "above" # to those that are above, assign "above"
xy$new[!above.median] <- "below" # notice the exclamation mark which negates the statement
head(xy)
original new
1 -1.2411173 below
2 -0.5832050 below
3 0.3947471 above
4 1.5042111 above
5 0.7667997 above
6 0.3174604 above
library(ggplot2)
ggplot(xy, aes(x = original, y = 1, color = new)) +
theme_bw() +
geom_point() +
scale_color_brewer(palette = "Set1")
答案 1 :(得分:0)
使用ifelse()
:
conservation$alt.factor <- factor(
ifelse(conservation$alt < median(conservation$alt, na.rm = TRUE), 1,
ifelse(conservation$alt > median(conservation$alt, na.rm = TRUE), 2, NA)),
1:2, labels = c("below", "above"))
请注意,此设置会将conservation$alt == median(conservation$alt)
的所有行设置为NA
。如果不需要,只需将ifelse
- 语句中的最后一个参数更改为其他参数。