替换R中子集数据框中的多个列值

时间:2014-07-03 08:25:09

标签: r replace dataframe subset

我想在R中替换子集数据帧的某些值,如:

我使用的数据框:

sw1<- swiss[1:5, 1:4]
sw2 <- rbind(sw1,sw1)

以下是一些索引标准定义的子集:

sw2[sw2$Examination==15 & sw2$Education==12,]

我想将考试和教育的价值分别替换为1和2。 但是我如何为这些单元格赋值,以便获得具有正确值的sw2数据帧。

1 个答案:

答案 0 :(得分:3)

在你的问题中:

sw2 <- rbind(sw2,sw2)

sw2来自哪里?我只是假设你的rbind()应该是:

sw2 <- rbind(sw1, sw1)

无论如何,您可以像这样替换这两列:

sw2[sw2$Examination==15 & sw2$Education==12, c('Examination', 'Education')]  <- list(1, 2)

我正在隔离需要使用c('Examination', 'Education')更新的列。 list(1, 2)将自动重复为您指定的行数(在本例中为两行)。

语法有点时髦,所以我可能会做更长的事情但更容易阅读。

m <- with(sw2, Examination == 15 & Education == 12)
sw2[m, 'Examination'] <- 1
sw2[m, 'Education'] <- 2