我确实有一个现有的列,仅包含与天气代码相对应的数字(这些数字与降水的类型相对应,可以分组,例如80到82 =降雨,86到90 =降雪等)。现在,我想根据新列中的代码返回降水类型(雨,雪)。
我知道这是一个非常新手的问题,但是我是R语言的初学者,所以请保存我:)
预先感谢
我已经创建了一些值,这些值将涉及相同降水类型的数字分组:
x<-50:67
y<-80:82
a<-68:69
b<-83:84
c<-70:79
d<-85:86
e<-36:39
然后我尝试将这些值链接到文本...不确定我是否以正确的方式做到了:
type_list <- list(x = "rain", y = "rain", a = "mixed",b = "mixed",c = "snow", d ="snow")
答案 0 :(得分:1)
为什么不只是
x <- 50:67
y <- 80:82
a <- 68:69
b <- 83:84
c <- 70:79
d <- 85:86
e <- 36:39
v[v %in% c(x, y)] <- "rain"
v[v %in% c(a, b)] <- "mixed"
v[v %in% c(c, d)] <- "snow"
v[v %in% e] <- "unknown"
v
[1] "rain" "unknown" "snow" "rain" "rain" "rain" "mixed"
[8] "rain" "rain" "snow" "rain" "rain" "snow" "unknown"
[15] "snow" "snow" "snow" "rain" "rain" "snow" "rain"
[22] "rain" "snow" "snow" "snow" "unknown" "snow" "mixed"
[29] "snow" "rain" "rain" "rain" "rain" "unknown" "rain"
[36] "rain" "snow" "rain" "unknown" "snow" "rain" "mixed"
[43] "mixed" "snow" "rain" "rain" "unknown" "unknown" "rain"
[50] "unknown"
或within
一个数据帧。
d <- within(d, {
v[v %in% c(x, y)] <- "rain"
v[v %in% c(a, b)] <- "mixed"
v[v %in% c(c, d)] <- "snow"
v[v %in% e] <- "unknown"
})
head(d)
# v x
# 1 rain -1.07816937
# 2 unknown -0.05166311
# 3 snow 0.58092897
# 4 rain -0.31734752
# 5 rain -2.95357980
# 6 rain -1.00310455
set.seed(42)
v <- sample(sort(c(x, y, a, b, c, d, e)), 50, replace=TRUE)
d <- data.frame(v, x=rnorm(50))