如何重新标记列值

时间:2018-10-03 14:59:33

标签: r

这似乎是一个简单的任务,但对于我的一生,我无法弄清楚。我有一个具有以下结构的数据框列:

df = as.data.frame(c(1,1,2,2,3,3,4,4))

我还有以下向量:

index = seq(1,2)
labels = c('Control','Treatment')

该索引由for循环更新,我要做的就是用适当的标签替换与索引匹配的df列中的所有值(例如df中的所有1和2值都将替换为'控制')。到目前为止,我最接近的是:

df$col[df$col == index[1]] = labels[1]

如果将index[1]替换为index,则仅匹配向量的第一个值。如何做到所有值都匹配并替换?

谢谢!

1 个答案:

答案 0 :(得分:0)

尚不清楚您要做什么。但是根据您的描述,我想您可能需要的是factor

df <- data.frame(col=c(1,1,2,2,3,3,4,4))
labs <- c("first", "second", "third", "fourth")
df$col2 <- factor(df$col, labels=labs)
df
#   col   col2
# 1   1  first
# 2   1  first
# 3   2 second
# 4   2 second
# 5   3  third
# 6   3  third
# 7   4 fourth
# 8   4 fourth

您可以通过levels更改这些标签,例如:

> levels(df$col2)[3:4] <- c("tre", "fyra")
> df
  col   col2
1   1  first
2   1  first
3   2 second
4   2 second
5   3    tre
6   3    tre
7   4   fyra
8   4   fyra