我创建了一个名为Performance的新列,我需要将每个单元格的值更改为另一列的值。
首先,我创建了这样的列
biperf$performance <- 0
因此数据框如下所示:
ID performance
1 0
1 0
1 0
1 0
2 0
2 0
2 0
2 0
3 0
3 0
3 0
3 0
15 0
15 0
15 0
15 0
16 0
16 0
16 0
16 0
我希望它看起来像这样:
ID performance
1 good
1 good
1 good
1 good
2 0
2 0
2 0
2 0
3 0
3 0
3 0
3 0
15 good
15 good
15 good
15 good
16 good
16 good
16 good
16 good
然后我尝试了一下,它确实起作用了,但是我有200个不同的ID,每个ID有20个观察值,而不是我在此处作为示例的4个观察值。
biperf$performance[biperf$ID == "1"] <- "good"
biperf$performance[biperf$ID == "15"] <- "good"
biperf$performance[biperf$ID == "16"] <- "good"
所以我尝试了以下方法:
perf$performance <- ifelse(perf$ID %in% c('1', '15','16'), "good", perf$performance)
这改变了性能下的所有单元。所以我尝试了一个循环,但它给了我一个错误,我无法使其正常工作。
if(biperf$ID %in% c('1','15','16')){
biperf$performance = "good"
}
我在论坛中寻找了此内容,但是在条件单元格中找不到包含很多值的任何内容。 ID是一个因素。除了“好”,我还需要其他ID的其他值。
谢谢!
答案 0 :(得分:0)
您ifelse
是个好方法,您只需要保持数字和字符值的直线:
# create example dataframe
biperf <- data.frame(ID = rep(c(1,2,3,15,16), each=4))
# do your ifelse (notice no quotes around 1/15/16, yes quotes around "0" and "good"
beperf$performance <- ifelse(biperf$ID %in% c(1, 15, 16), "good", "0")