有什么方法可以覆盖/编辑数据框中的特定字段?

时间:2018-11-30 02:00:57

标签: r

假设mtcars,丰田花冠的mpg应该是23.9,而不是33.9。您将如何去做?

出于这个问题的目的,请假设可以有多排丰田花冠。

示例1:

mtcars["Toyota Corolla" & mtcars$mpg==33.9,] <- 23.9

给予

  

“ Toyota Corolla”和mtcars $ mpg == 33.9中的错误:     操作仅适用于数字,逻辑或复杂类型

示例2:

mtcars[mtcars$mpg==33.9,"mpg"] <- 23.9

不安全,因为mpg可能有多个值。

1 个答案:

答案 0 :(得分:3)

我们可以改为检查rownames并更新值

df <- mtcars
df[rownames(df) == "Toyota Corolla", "mpg"] <- 23.9

#....
#Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
#Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
#Toyota Corolla      23.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
#Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
#Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
#....

或者,如果我们想更加确定并检查mpg变量,我们可以做

df[rownames(df) == "Toyota Corolla" & df$mpg == 33.9, "mpg"] <- 23.9