如何从数字代码的新列中返回结果

时间:2019-07-05 10:15:36

标签: r

我确实有一个现有的列,仅包含与天气代码相对应的数字(这些数字与降水的类型相对应,可以分组,例如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")

1 个答案:

答案 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))