我有一个数据框,要向其附加一列,其值取决于数据框中的一列。 我的数据框看起来像这样:
c1 c2 c3
x 2 z
y 5 f
c 3 r
a 11 z
现在,我想基于c4
的值附加另一列c2
。
对于0到4之间的所有值,我要附加"low"
,对于5到9之间的值,我要附加"medium"
,对于大于10 "high"
的值。
c1 c2 c3 c4
x 2 z "low"
y 5 f "medium"
c 3 r "low"
a 11 z "high"
答案可能很简单,但我真的想不到。
答案 0 :(得分:3)
df <- read.table(text = "
c1 c2 c3
x 2 z
y 5 f
c 3 r
a 11 z
", h = T)
df$c4 <- cut(df$c2, c(-Inf,4,9,Inf), c("low", "medium", "high"))
> df
c1 c2 c3 c4
1 x 2 z low
2 y 5 f medium
3 c 3 r low
4 a 11 z high
答案 1 :(得分:2)
您可以嵌套ifelse
个故事。从连续变量中创建分类变量时,这非常方便。
data$c4 <- ifelse(data$c2 >= 0 & data$c2 <= 4, 'low',
ifelse(data$c2 >=5 & data$c2 <=9, 'medium',
ifelse(data$c2 >=10, 'High', 'something else')