将某个范围之间的值转换为字母

时间:2015-07-09 18:51:08

标签: r

是否有一种简单的方法可以让某个范围之间的值等于一个字母?因此,在以下示例中,我将如何转换df中的所有值,以便:

  • 小于或等于1 = A的值。
  • 小于或等于5 = B的值。
  • 大于5 = C的值。

一个小示例数据集:

df1 <- rnorm (100, mean = 1, sd = 0.3)
df2 <- rnorm (100, mean = 5, sd = 1.6)
df <- cbind(df1,df2)

1 个答案:

答案 0 :(得分:3)

as.data.frame(apply(df,2, function(x) cut(x, c(-Inf,1,5,Inf), labels=c('A','B','C'))))
#    df1 df2
# 1    A   C
# 2    A   C
# 3    B   B
# 4    A   C
# 5    A   C
# 6    A   B
# 7    A   C
# 8    B   B
# 9    B   C
# 10   A   C

在为外边界创建切割点时,请务必使用-InfInf。它包含在apply函数中,以便在每列上重复该过程。