基础R中的条件突变[重复]

问题描述 投票:0回答:4

这个问题在这里已有答案:

我有这个数据帧:

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的可变目标值的条件变异是否可能?

r
4个回答
1
投票

您的代码中有不同的长度,如错误消息中所述。你可以试试这个:df$value[df$gender == "m"] <- df$value[df$gender == "m"] * -1


1
投票

考虑ifelse(),像这样:

df$value <- ifelse(df$gender == 'm', df$value * -1, df$value)

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

0
投票

或者使用with()

df$value <- with(df, ifelse(gender == "m", value - 1, value))
© www.soinside.com 2019 - 2024. All rights reserved.