我确信这个问题已被问到很多时间,但我找不到解决方案。
我试图根据第一个变量的值有条件地替换第二个变量的值。这是数据。
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
答案 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中的所有值。