这似乎是一个简单的任务,但对于我的一生,我无法弄清楚。我有一个具有以下结构的数据框列:
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
,则仅匹配向量的第一个值。如何做到所有值都匹配并替换?
谢谢!
答案 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