这个问题在这里已有答案:
我有这个数据帧:
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的可变目标值的条件变异是否可能?
您的代码中有不同的长度,如错误消息中所述。你可以试试这个:df$value[df$gender == "m"] <- df$value[df$gender == "m"] * -1
考虑ifelse()
,像这样:
df$value <- ifelse(df$gender == 'm', df$value * -1, df$value)
有可能,您只需要确保它们与错误所说的长度相同。你可能想做的是:
> length(df$value[df$gender == 'm'])
[1] 2
> length(df$value)
[1] 4
df$value[df$gender == "m"] <- df$value[df$gender == "m"] * -1
或者使用with()
。
df$value <- with(df, ifelse(gender == "m", value - 1, value))