我想更改数据框中的某些值。在这种情况下,负值乘以“ -0.5”。我可以使用下面的for
和if
循环来实现它,尽管不是很整洁。
name <- c("a", "b", "c")
value <- c(-10, 3,6)
df <- data.frame(name, value)
for (n in 1:nrow(df)) {
if (df$value[n] < 0) {
df$value[n] <-df$value[n] * (-0.5)
}
}
我尝试过这种方式:
df[df[2] < 0] <- df[2] * (-0.5)
但是发生错误,提示:
Error in `[<-.data.frame`(`*tmp*`, df[2] < 0, value = list(value = c(-2.5, :
unsupported matrix index in replacement
我的代码怎么了?
答案 0 :(得分:1)
我建议将所有行相乘,但对于肯定的行请使用1
(乘以1
不会改变任何内容)。例如:
# Return -0.5 for negative values and 1 for positive
df$value * ifelse(df$value < 0, -0.5, 1)
# [1] 5 3 6