我有这个数据框:
gender <- c("m", "m", "f", "f")
value <- c(75, 50, 20, 80)
df <- data.frame(gender, value)
df
我想更改“值”列中的值,条件是“性别”列上的值。
如果目标更改是固定数字或字符,则突变很简单:
df$value[df$gender == "m"] <- 1
但是,如果目标值是原始值的变异,就像这样
df$value[df$gender == "m"] <- df$value * -1
我收到以下错误:
> Warning message:
> In df$value[df$gender == "m"] <- df$value * -1 :
> number of items to replace is not a multiple of replacement length
基础R中是否可以使用可变目标值的条件变异?
答案 0 :(得分:1)
您的代码中有不同的长度,如错误消息中所述。您可以尝试:df$value[df$gender == "m"] <- df$value[df$gender == "m"] * -1
答案 1 :(得分:1)
考虑ifelse()
,如下:
df$value <- ifelse(df$gender == 'm', df$value * -1, df$value)
答案 2 :(得分:0)
有可能,你必须确保它们的长度和错误的长度相同。您可能想要做的是:
> length(df$value[df$gender == 'm'])
[1] 2
> length(df$value)
[1] 4
df$value[df$gender == "m"] <- df$value[df$gender == "m"] * -1
答案 3 :(得分:0)
或使用with()
。
df$value <- with(df, ifelse(gender == "m", value - 1, value))