R如何有条件地替换变量的值

时间:2015-09-15 05:04:01

标签: r if-statement

我确信这个问题已被问到很多时间,但我找不到解决方案。

我试图根据第一个变量的值有条件地替换第二个变量的值。这是数据。

 MAKE Continent
1  HOLDEN        US
2  HOLDEN        US
3    FORD        US
4    FORD        US

if(gsample$MAKE == "HOLDEN") gsample$Continent = "AUS"

警告讯息:

In if (gsample$MAKE == "HOLDEN") gsample$Continent = "AUS" :
  the condition has length > 1 and only the first element will be used

3 个答案:

答案 0 :(得分:2)

根据逻辑条件MAKE=='HOLDEN',如果条件为ifelse,我们会使用TRUE返回'AUS',否则返回'Continent'的相应值。

gsample$Continent <- with(gsample, ifelse(MAKE=='HOLDEN', 'AUS', Continent))

或者我们使用逻辑索引对“大陆”进行子集化,并通过分配来替换它。

gsample$Continent[gsample$MAKE=='HOLDEN'] <- 'AUS'

或者我们可以使用data.table。我们根据setDT(gsample)中的逻辑条件将'data.frame'转换为'data.table'(i),我们将(:=)欧洲大陆分配给'AUS'< / p>

library(data.table)
setDT(gsample)[MAKE=='HOLDEN', Continent:= 'AUS']

注意:我们假设“大陆”列为character类。

答案 1 :(得分:1)

gsample$Continent <- ifelse(gsample$MAKE == "HOLDEN", "AUS","US")

答案 2 :(得分:1)

假设您要根据其他列中的值更改一列的值。使用以下;

df$Continent[df$MAKE == 'HOLDEN'] <- 'AUS'

这将非常快速地复制dataferame中的所有值。